SQL Select 删除重复数据 保留最大id

本文介绍如何使用SQL查询、更新和删除数据库中的重复记录,同时保留每组重复数据中ID最大的一条记录。通过具体SQL语句示例,讲解了如何识别、处理重复数据,适用于需要维护数据完整性和唯一性的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,查询Table1 中重复数据,(不包含重复数据中id最大的一行)(效率比较高)

--查询重复数据
SELECT * FROM Table t1  WHERE  EXISTS
 (SELECT id FROM Table t2 WHERE t1.列1=t2.列1 AND
 t1.列2=t2.列2 AND t1.列3=t2.列3 AND t1.id < t2.id)

--修改重复数据列值 重复数据最大id列值不变
UPDATE Table SET 列='' FROM Table t1  WHERE  EXISTS
 (SELECT id FROM Table t2 WHERE t1.列1=t2.列1 AND
 t1.列2=t2.列2 AND t1.列3=t2.列3 AND t1.id < t2.id)

--删除重复数据 保留最大id
DELETE Table t1  WHERE  EXISTS
 (SELECT id FROM Table t2 WHERE t1.列1=t2.列1 AND
 t1.列2=t2.列2 AND t1.列3=t2.列3 AND t1.id < t2.id)

 2.排除所有非重数据和重复数据中为最大id,取出重复数据(不包含重复数据中id最大的一行)

SELECT * FROM  Table WHERE id NOT IN (SELECT  MAX(id) FROM Table GROUP BY 列1,列2,列3)

SELECT * FROM  Table t1 WHERE id  NOT EXISTS
 (SELECT  MAX(t2.id) FROM Table t2 GROUP BY 列1,列2,列3 HAVING t1.id = MAX(t2.id)))



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值