ORACLE查询重复数据

有一个表A,里面有些数据除了id列(主键)和录入时间列不同,剩下的列都相同,其中有一列pid,我想根据pid列查询出这张表的数据,但不要pid重复的,如果重复就取时间列最... 有一个表A,里面有些数据除了id列(主键)和录入时间列不同,剩下的列都相同,其中有一列pid,我想根据pid列查询出这张表的数据,但不要pid重复的,如果重复就取时间列最大的,请问sql怎么写?谢谢
pid列也不相同,不过有些数据相同
展开
 我来答
badkano
2015-12-14 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144771 获赞数:885383
团长

向TA提问 私信TA
展开全部

oracle重复数据可用聚合函数和having语句来实现。

如test表中有如下数据:

现在要求查询name中有重复的数据,可用如下语句:

select name from test group by name having count(*)>1;

结果如图:

创作者EBMghlYiDT
2019-04-03 · TA获得超过4005个赞
知道大有可为答主
回答量:3085
采纳率:26%
帮助的人:463万
展开全部
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)这个函数你也可以好好看哈哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nebulaly
2009-10-19 · TA获得超过196个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:244万
展开全部
用rank函数,例如:

select *
from (select t.*, rank() over(partition by job order by hiredate desc) r
from scott.emp t)
where r = 1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式