1.刪除重複數據,單列,只保留id最小的一條(自增長的列id)
DELETE
FROM test
WHERE `name` IN (
SELECT `name`
FROM (
SELECT `name`
FROM test
GROUP BY `name`
HAVING count( `name` ) > 1
) a
)
AND id NOT IN (
SELECT id
FROM (
SELECT min( id ) id
FROM test
GROUP BY `name`
HAVING count( * ) > 1
) a
);
2.刪除重複數據,多列,只保留id最小的一條(自增長的列id)
DELETE
FROM test
WHERE id IN (
SELECT id
FROM (
SELECT max( a.id ) id
FROM test a JOIN test b ON a.`name` = b.`name` AND a.age = b.age AND a.gender = b.gender AND a.location = b.location AND a.`year` = b.`year`
GROUP BY b.`name`, b.age, b.`gender`, b.location, b.`year`
HAVING count( * ) > 1
) a
);