删除表中重复数据sql语句

原创 2018年04月16日 14:45:03
  1. 查询表中重复数据
    select * from employee where employeeId in (select employeeId from employee group by employeeId having count(employeeId) > 1)

  2. 删除表中多余的重复记录,重复记录是根据单个字段(employeeId)来判断,只留有rowid最小的记录
    delete from employee where employeeId in (select employeeId from employee group by employeeId having count(employeeId) > 1)
    and rowid not in (select min(rowid) from employee group by employeeId having count(employeeId )>1)

  3. 查找表中多余的重复记录(多个字段)
    select * from employee e
    where (e.employeeId,e.phoneNo) in (select employeeId,phoneNo from employee group by employeeId,phoneNo having count(*) > 1)

  4. 删除表中多余的重复记录(多个字段),只留有rowid最小的记录
    delete from employee e
    where (e.employeeId, e.phoneNo) in (select employeeId, phoneNo from employee group by employeeId,phoneNo having count(*) > 1)
    and rowid not in (select min(rowid) from employee group by employeeId,phoneNo having count(*)>1)

  5. 查找表中多余的重复记录(多个字段),不包含rowid最小的记录
    select * from employee e
    where (e.employeeId,e.phoneNo) in (select employeeId, phoneNo from employee group by employeeId,phoneNo having count(*) > 1)
    and rowid not in (select min(rowid) from employee group by employeeId,phoneNo having count(*)>1)


通用:

delete from table t
where (t.字段1, t.字段2, … , t.字段n) in (select 字段1, 字段2, … , 字段n from table group by 字段1, 字段2, … , 字段n having count(*) > 1)
and rowid not in (select min(rowid) from table group by 字段1, 字段2, … , 字段n having count(*)>1)

此外:

如果只是查询的时候, 不显示重复, 只需select distinct 字段 from table….

使用一条SQL语句删除表中重复记录

数据库结构的脚本:if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[TempA]) and OBJECTPROP...
  • johnsuna
  • johnsuna
  • 2007-06-06 17:00:00
  • 6896

【经典SQL】删除表中重复的记录

考虑到这种SQL用到的还是比较多,故在此记录一下。
  • yll_358918552
  • yll_358918552
  • 2014-10-21 10:39:40
  • 781

SQL删除表中的重复记录(多个字段),只留一条。

在一家韩国电商的面试中被问到了,当时一脸懵逼,没想法…… 回来想了想,还是有些思路的……唉……临场真是弱啊…… 第一步:查询重复记录 SELECT * FROM TableName WHERE ...
  • sinat_36246371
  • sinat_36246371
  • 2016-10-13 13:35:29
  • 2113

如何删除表中重复数据

  • 2008年09月04日 09:59
  • 628B
  • 下载

关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句理解

正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 。如下: 表字段和数据:  SQL语句:  DELETE ...
  • dsiori
  • dsiori
  • 2016-10-13 14:30:42
  • 2941

一起做面试题--如何删除数据库表中的重复数据

这个问题也经常考到,所以我就来说一下。 假设有这样的数据: 表名asshole,字段如上。 思路就是先确定重复记录的判断依据,这里的一句就是name,symptom,age三个字段都相同...
  • ccdust
  • ccdust
  • 2016-06-01 21:34:56
  • 1330

查询和删除表中重复数据

  • 2011年04月03日 15:36
  • 5KB
  • 下载

db2中删除重复记录的sql语句

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from ...
  • yixiayizi
  • yixiayizi
  • 2012-11-25 11:50:33
  • 668

数据库中删除表中重复数据的一点心得

在一个表中有一个自动增长列c1,同时又有两个外健列分别指向另外两个标的主键c2,c3,突然有一天我想让c2与c3组合为一个唯一键,这个时候先必须删除关于c2与c3的重复键(因为c1不可能重复),这就是...
  • tz_xiong
  • tz_xiong
  • 2007-10-26 01:27:00
  • 4381

Sql Server表中删除重复记录最简单方法(多字段重复)

DELETE Sys_RlReport WHERE Id NOT IN (SELECT MIN(Id) FROM Sys_RlReport ...
  • dxnn520
  • dxnn520
  • 2012-10-15 15:29:42
  • 2773
收藏助手
不良信息举报
您举报文章:删除表中重复数据sql语句
举报原因:
原因补充:

(最多只允许输入30个字)