oracle 取重复数据中一条
答案:2 悬赏:10 手机版
解决时间 2021-11-22 02:45
- 提问者网友:我们很暧昧
- 2021-11-21 06:38
oracle 取重复数据中一条
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-11-21 07:27
操作步骤:
表tt结构如下:
create table tt(
id number,
time date,
others .... 其它字段
);, id不唯一,有重复,time唯一。
要找出每个id最早出现的那几行数据,有几个id就有几行输出。
分析:出现最早的数据,即time最小的数据,用min(time)来分组
SQL语句如下:
select t2.* from
( select id, min(time) tm from tt group by id ) t1, tt t2
where t1.id=t2.id and t1.tm=t2.time ; 说明:子语句( select id, min(time) tm from tt group by id ) 就是得到每个id的最小时间列表
- 先按要求,针对某唯一字段,对重复数据进行分组,取max或min,结果存储到临时表
关联原表与上一步的临时表,取到相应的数据
表tt结构如下:
create table tt(
id number,
time date,
others .... 其它字段
);, id不唯一,有重复,time唯一。
要找出每个id最早出现的那几行数据,有几个id就有几行输出。
分析:出现最早的数据,即time最小的数据,用min(time)来分组
SQL语句如下:
select t2.* from
( select id, min(time) tm from tt group by id ) t1, tt t2
where t1.id=t2.id and t1.tm=t2.time ; 说明:子语句( select id, min(time) tm from tt group by id ) 就是得到每个id的最小时间列表
全部回答
- 1楼网友:雾月
- 2021-11-21 07:58
select * from table_name a where a.rowid <=(select min(rowid) from table_name b where a.id=b.id) order by id asc;
这个语句是查询出id相同的记录,并按照id递增排序,试试看,如果有什么错误回复我。追问和表b有什么关系?这个语句我见过。我不用这样,我的目的只是重复的中取一条。追答表b还是表a只是别名,用来区分的。这个查询是查询的同一个表。
这个语句是查询出id相同的记录,并按照id递增排序,试试看,如果有什么错误回复我。追问和表b有什么关系?这个语句我见过。我不用这样,我的目的只是重复的中取一条。追答表b还是表a只是别名,用来区分的。这个查询是查询的同一个表。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯