如何删除一些重复的行

时间:2016-01-20 16:16:30

标签: php mysql

我试图删除表格中的一些重复行。我首先通过执行此查询来选择所有重复的行:

SELECT a.id as id FROM table A join table B on A.site = B.site 
where A.nb_affichages = B.nb_affichages and A.nb_clics = A.nb_clics

然后我尝试从第一个查询中删除所有选定的ID:

DELETE FROM table WHERE id IN ( SELECT * FROM ( SELECT a.id as id FROM table A join table B on A.site = B.site 
where A.nb_affichages = B.nb_affichages and A.nb_clics = A.nb_clics) AS p )

第二个查询删除第一个中选择的所有行,而不想让一行删除其他行。

所以任何人都可以帮我优化这个查询。

1 个答案:

答案 0 :(得分:2)

它将保留重复值的第一个数据,并将删除重复值的所有其余值。

DELETE c1 
FROM table c1, table c2 
WHERE c1.nb_affichages = c2.nb_affichages 
AND c1.nb_clics = c2.nb_clics 
AND c1.site = c2.site
AND c1.id > c2.id;