數據完全一致的情況:
#MySQL不支持INTO
Create table temp (Select DISTINCT * from student);
DROP TABLE student;
Create table student (Select * from temp);
DROP TABLE temp;
#其他數據庫
SELECT DISTINCT * INTO temp FROM student;
DROP TABLE student;
SELECT * INTO student FROM temp;
DROP TABLE temp;
個別字段一致:
DELETE FROM student WHERE id in (SELECT id FROM (SELECT id FROM student where id not in(SELECT MIN(id) id from student GROUP BY `name`)) as s1);
解析:
因為MySQL不能對同一個表,查詢的同時進行更新,所以很多同學都會覺得這個問題比較簡單。
SELECT id FROM student where id not in(SELECT MIN(id) id from student GROUP BY `name`);
上面的sql是先查詢出所有有效數據,然后通過not in() 的方式找出需要刪除的id,最后對結果進行一次包裝,起一個別名,然后就可以正常刪除了。