- 方法一(此方法要注意各种可能出现的语法错误(看注释))
DELETE FROM
`Person`
WHERE `Id` NOT IN
(
SELECT t.`Id`
#加上这个外层筛选可以避免You can't specify target table for update in FROM clause错误
FROM (
SELECT
#不加" AS `Id` " 会有 “Unknown column 't.Id ' in 'field list'” 错误
MIN(`Id`) AS `Id`
FROM
`Person`
GROUP BY
`Email`
) t
)
;
耗时:
- 方法二(推荐使用)
DELETE p1 FROM
`Person` p1,
`Person` p2
WHERE
p1.`Email` = p2.`Email`
AND
p1.`Id` > p2.`Id`
;
耗时: