问题描述
SELECT col1,col2,col3 FROM myTable GROUP BY col1,col3 HAVING count(*) > 1;
DELETE FROM myTable WHERE col1,col3 IN (
SELECT col1,col3 FROM (
SELECT col1,col3 FROM myTable
GROUP BY col1,col3 HAVING count(*) > 1 )
t );
解决方法
在表格中使用INNER JOIN
DELETE t1 FROM myTable t1
INNER JOIN (
SELECT col1,col2,col3 FROM (
SELECT col1,col3 FROM myTable
GROUP BY col1,col3 HAVING count(*) > 1 )
t )
t2 ON t2.rcol1 = t1.rcol1 AND t2.col2 = t1.col AND t2.col3 = t1.col3;
但是您应该在测试数据库上进行测试,因为我认为您的选择不能标识正确的行,最好是有一个UNIQUE列,它可以标识正确的行,因为这会删除所有行