Oracle如何删除一张表内的重复数据,但保留最新的一条?

一张表根据customer_guid判断是否重复,删除其中的的重复数据,但保留时间最新的一条。例如:customer_guidcreateddate123452015/2... 一张表根据customer_guid判断是否重复,删除其中的的重复数据,但保留时间最新的一条。
例如:
customer_guid createddate
12345 2015/2/1 08:00:00
12345 2015/2/9 17:00:00

则删除2月1日的这条数据,保留2月9日的这条。

现在只写出了判断重复的语句,不知道时间怎么判断了,初学Oracle,求助各位大神帮忙解答
DELETE from Table WHERE (customer_guid) IN ( SELECT customer_guid FROM Table GROUP BY customer_guid HAVING COUNT(customer_guid) > 1)
展开
 我来答
程序猿集锦
2016-10-19 · 专注于各种数据库技术
程序猿集锦
采纳数:91 获赞数:277

向TA提问 私信TA
展开全部
楼主你的这个SQL会将表中所有重复的数据都给删掉的,包括你要保留的最新的时间戳的数据。其实你的这个SQL知识查询出来的那些数据是重复的,至于要删除那条数据,你的这个SQL定位不到。
查询出你想要删除的重复数据用下面的SQL:
select * from table a where a.createdate < (select max(b.createdate) from table b where a.customer_guid=b.customer_guid);
删除的话就用这个了:
delete from table a where a.createdate < (select max(b.createdate) from table b where a.customer_guid=b.customer_guid);
百度网友13eda02
2015-02-09 · TA获得超过778个赞
知道小有建树答主
回答量:1048
采纳率:77%
帮助的人:377万
展开全部

参考这个

DELETE from Table t1
WHERE createddate != ( SELECT max(createddate)
FROM Table t2 
where t2.customer_guid=t1.customer_guid)
and exists ( select count(customer_guid)
from Table t3
where t3.customer_guid=t1.customer_guid
having count(customer_guid)>1 );
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式