2 guet777 guet777 于 2014.03.07 11:47 提问

SQL查询多字段重复项(只保留一个),并进行统计

如有某数据库如下:

CSDN移动问答

fldBeginT、fldQuserC、fldUseTim、fldDate如有相同只保留1条,并按fldQuserC进行统计有多少条。

请大神解答。

2个回答

shendixiong
shendixiong   2014.04.04 11:20

我在网站上帮你找的答案!如下`

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select * from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) 

简单的说第一个就是删除所有重复的数据,第二个是删除重复数据的同时保留一条数据。它运用的是oracle。

如果是mysql的话,请M我

xiaoniao1zhi
xiaoniao1zhi 人家没要求删除数据,要是随随便便都运用Delete,那么数据就再也不珍贵了。
大约 2 年之前 回复
wudalin1987
wudalin1987   2014.07.30 10:24

SELECT fldBeginT,fldQuserC,fldUseTim,fldDate,COUNT(*) FROM 表名 GROUP BY fldBeginT,fldQuserC,fldUseTim,fldDate

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!