SQL-查找和删除两列具有重复值的行

时间:2019-09-24 13:26:37

标签: mysql sql

我有一个MySQL表,我想查找和删除两列具有重复值的行。

例如:

|ID|Name|Address|Birth_Date|
---------------------------
|1 | ab |  abc  |1990-05-24|
|2 | cd |  def  |1980-06-30|
|3 | ab |  xyz  |1990-05-24|

这里有ID 1和3的两行引用同一个人。这些行共享相同的Name和相同的Birth_Date值,并且可能与一个或多个属性不同,因此它们不是重复项。

如何查找和删除这些行仅保留其中一个(第一次出现或第二次出现)?

我希望结果表是同一个表,并且只保留这些行的一次出现:

|ID|Name|Address|Birth_Date|
---------------------------
|1 | ab |  abc  |1990-05-24|
|2 | cd |  def  |1980-06-30|

1 个答案:

答案 0 :(得分:-1)

尝试如下

delete  from table_name where (id,name) in (

select id,name from (
select max(id) as id, name,Birth_Date,count(*) as cnt
from table_name group by name,Birth_Date
) a where cnt>1