select tsk,act,flt,arn,username from
(
select tsk, act, flt, arn, username
from epare_crewtask where tsk='200905241653PEK000'
union
select tsk,act, flt, arn, username
from epare_crewtask_bak where tsk='200905241653PEK000'
)产生了2条重复记录,在google上查了,说是用rowid可以解决这个问题,但是,我按照网上的办法运行后,报错,说是不能在动态产生的表上这么用,请高人们帮帮忙,使用SQL有没有办法去除重复的记录?
解决方案 »
- 大家有没有见过这个问题
- 【转】数据库设计的黄金经验
- 新手请教如何写一个oracle双重循环sql(50分)
- [求助]问一个sql语句
- 一条sql语句可以同时插入,删除两张表的数据么,怎么写(不用触发器,存储过程)
- 怎么实时的删除重复的纪录
- 简单的sql语句求助
- 我发觉ORACLE的错误码,有些时ORA开头的,有些是TNS开头的,有什么区别吗?还有以其它开头的吗?在哪里可以找到所有的错误码?
- 这样的概念送分,oracle的一般理论下,一个表中多少行数据为比较优化,速度快
- Oracle 几十张表关联查数据很慢,有加速多表关联数据查询的解决方法吗
- 一个关于oracle视图的基础问题
- [向ALL提问]=====求一计算时间差函数=====
(
select tsk, act, flt, arn, username
from epare_crewtask where tsk='200905241653PEK000'
union
select tsk,act, flt, arn, username
from epare_crewtask_bak where tsk='200905241653PEK000'
)
正解,用distinct来解决重复问题,不过效率不是很高啊!
对完全一样的记录,union会自动去重复,
如果只是id相同,就不能去除掉了可以用分析函数row_number去重复,查一查,相关的帖子很多
from(
select nvl(a.tsk,b.tsk) tsk, ...
from epare_crewtask a
full outer join epare_crewtask_bak b
on (a.tsk='200905241653PEK000' and a.tsk = b.tsk)
)
group by tsk...
select tsk,act,flt,arn,airline airlinechn,std,username from(
select tsk, act, flt, arn, airlinechn airline,dep3, std, trim(getCaptainByTsk(tsk)||' '||getCaptainByTsk2(tsk)) username
from epare_crewtask where (std between to_date('2009-5-24','yyyy-MM-dd') and to_date('2009-5-24','yyyy-MM-dd')+1)
and tsk='200905241653PEK000'
union
select tsk,act, flt, arn, airlinechn airline,dep3, std, getCaptainByTskbak(tsk) username
from epare_crewtask_bak where (std between to_date('2009-5-24','yyyy-MM-dd') and to_date('2009-5-24','yyyy-MM-dd')+1)
and tsk='200905241653PEK000')