
ORACLE查询重复数据
有一个表A,里面有些数据除了id列(主键)和录入时间列不同,剩下的列都相同,其中有一列pid,我想根据pid列查询出这张表的数据,但不要pid重复的,如果重复就取时间列最...
有一个表A,里面有些数据除了id列(主键)和录入时间列不同,剩下的列都相同,其中有一列pid,我想根据pid列查询出这张表的数据,但不要pid重复的,如果重复就取时间列最大的,请问sql怎么写?谢谢
pid列也不相同,不过有些数据相同 展开
pid列也不相同,不过有些数据相同 展开
3个回答
展开全部
select
distinct
x,y
ferom
t;
select
x,y
from
t
group
by
x,y;
select
*
from
t
group
by
x,y
having
count(*)>1
;--查出有重复记录的数据,如果having
count(*)=1
是查出没有重复记录的数据
select
*
from
t
a1
where
rowid=(select
max(rowid)
from
t
a2
where
a2.x=a1.x
and
a2.y=a1.y);
--利用rowid唯一,适用于少量重复数据
还有
rank
over(partition)这个函数你也可以好好看哈哦
distinct
x,y
ferom
t;
select
x,y
from
t
group
by
x,y;
select
*
from
t
group
by
x,y
having
count(*)>1
;--查出有重复记录的数据,如果having
count(*)=1
是查出没有重复记录的数据
select
*
from
t
a1
where
rowid=(select
max(rowid)
from
t
a2
where
a2.x=a1.x
and
a2.y=a1.y);
--利用rowid唯一,适用于少量重复数据
还有
rank
over(partition)这个函数你也可以好好看哈哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用rank函数,例如:
select *
from (select t.*, rank() over(partition by job order by hiredate desc) r
from scott.emp t)
where r = 1
select *
from (select t.*, rank() over(partition by job order by hiredate desc) r
from scott.emp t)
where r = 1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询