我有一个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|
答案 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
)