有关单表处理数据重复问题具体sql

1--DISTINCT的使用

DISTINCT只适用于两条数据完全相同的情况下,且数据量大时效率极低

SELECT DISTINCT * FROM 表名

2--分组查询方式

--查询多字段所有重复数据重复次数
 

select * from (select 字段1,字段2,字段3,count(1) from 表名 group by (字段1,字段2,字段3)  having count(*) > 1) 

 { count(*) = 1 时查询结果为所有不重复数据}

3--单表子查询方式

--查询所有去掉id最大的之后的重复数据(即如果要删除重复的话,删除一下查询结果的所有数据即可)

select t1.* from 表名 t1 where rowid not in  (select max(rowid)  
from 表名 t2  where t1.字段1=t2.字段1 and t1.字段2=t2.字段2 and t1.字段3=t2.字段3)

--删除所有重复数据,重复数据保留一条id最大的(即数据库中保留不重复的和重复的id最大的一条)

delete from (select t1.* from 表名 t1 where rowid not in  
(select max(rowid)  from 表名 t2  where t1.字段1=t2.字段1 and t1.字段2=t2.字段2
and t1.字段3=t2.字段3))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月下c独舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值