SQL SERVER 查询、删除重复数据

news/2025/1/15 18:04:06/

查询删除重复数据,只保留一条记录:

1.根据单字段,查询表中该字段重复出现记录:

SELECT * FROM Table
WHERE Parameter IN
(SELECT Parameter FROM Table
GROUP BY Parameter HAVING COUNT(Parameter ) > 1)

分析:
SELECT Parameter FROM Table
GROUP BY Parameter HAVING COUNT(Parameter ) > 1
根据字段分组,查询出表中出现重复(字段数量>1)的字段集

-----------------------------华丽的分割线---------------------------------

2.根据单字段,删除表中该字段重复出现记录,保留最小主键ID

DELETE FROM Table
WHERE Parameter IN
(SELECT Parameter FROM Table
GROUP BY Parameter HAVING COUNT(Parameter) > 1)
AND ID NOT IN
(SELECT MIN(ID) FROM Table
GROUP BY Parameter HAVING COUNT(Parameter)>1)


-----------------------------华丽的分割线---------------------------------

3.根据多个字段查询表中重复的记录

SELECT * FROM Table a
WHERE EXISTS
(SELECT Para1 ,Para2 FROM Table b
WHERE a.Para1 = b.Para1 AND
a.Para1 = b.Para2 GROUP BY Para1 ,Para2
HAVING COUNT(*) > 1 )

-----------------------------华丽的分割线---------------------------------

4.根据多个字段 删除表中重复的记录,保留最小主键记录

DELETE A
FROM Table A ,
(SELECT Para1,Para2 FROM Table
GROUP BY Para1,Para2
HAVING COUNT(*) > 1 ) B
WHERE A.Para1=B.Para1 AND a.Para2= b.Para2
AND A.ID NOT IN (SELECT MIN(ID) AS ID
FROM Table
GROUP BY Para1,Para2
HAVING COUNT(*) > 1)

-----------------------------华丽的分割线---------------------------------

5.查询多个字段重复记录,不包含最小主键ID

SELECT * FROM Table a
WHERE EXISTS
(SELECT Para1,Para2 FROM Table b
WHERE a.Para1 = b.Para1 AND a. Para2 = b.Para2
GROUP BY Para1,Para2
HAVING COUNT(*) > 1)
AND ID NOT IN
(SELECT MIN(ID) FROM Table
GROUP BY Para1,Para2
HAVING COUNT(*)>1)

-----------------------------华丽的分割线---------------------------------
转:https://blog.csdn.net/xuejiaxingq/article/details/75104618


http://www.ppmy.cn/news/734774.html

相关文章

SQL中重复数据的查询与删除

第一篇 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where…

sqlserver 删除表中重复的数据

--在删除之前可以先查看一下结果: SELECT max(主键ID),列1,列2...列n FROM [TABLE表] group by 列1,列2...列n--删除重复的数据,保留主键最大的那条数据(如果需要保留主键最小的数据,则是:min(主键ID) ...) delete from [TABLE表] where [主键ID] NOT IN (SELECT max(主键ID) F…

sql删除表中各类重复数据

在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(code)来判断 select * from MLTY_MDM_PRODUCT where code in (select code from MLTY_MDM_PRODUCT group by code ha…

如何删除sql server中的重复数据

如何删除sql server中的重复数据 先来看下有多少重复数据,伪代码如下: select count(重复字段)-count(distinct 重复字段) from 表名执行这个SQL伪代码候就能看到有多少数据是重复的,以便后面查看是否全部删除 然后通过如下SQL伪代码对重复…

SQL删除重复数据,仅保留(最新/有效的)一条数据

表结构 CREATE TABLE people (id int(11) NOT NULL AUTO_INCREMENT,peopleName varchar(2000) DEFAULT NULL COMMENT peopleName,status tinyint(1) DEFAULT NULL COMMENT 0无效 1有效,seq int(5) NOT NULL DEFAULT 1 COMMENT 记录值,peopleId tinyint(4) DEFAULT 0 COMMENT p…

SQL删除重复数据只保留一条

用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from …

利用sql语句删除重复数据

记录原因: 昨天遇到一个问题:需要写一个sql语句删除重复数据。当时解决的办法,是先查询出重复的数据id,然后再单独写删除语句进行删除。今天想了想应该还是有其他办法解决的,研究了下可以通过一条语句就能解决。记录下顺便做下对比: 单独写…

sql 删除重复数据 只留一条

目录 常用 其他 mysql 常用 oracle中,借助rowid,来留下一条 delete from t1where (f1,f2,f3) in (select f1,f2,f3 from t1 group by f1,f2,f3 having count(*) > 1)and rowid not in (select min(rowid) from t1 group by f1,f2,f3 having cou…