我试图删除表格中的一些重复行。我首先通过执行此查询来选择所有重复的行:
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 )
第二个查询删除第一个中选择的所有行,而不想让一行删除其他行。
所以任何人都可以帮我优化这个查询。
答案 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;