方法一:
正向思维-找出所有需要删除的记录 id
- 找出所有出现频次>1的 emp_no 及最小 id
- 联合 titles_test 找出所有需要删除的 id
- 根据 id 删除数据
DELETE
FROM
titles_test
WHERE
id IN (
SELECT
id
FROM
(
SELECT
a.id
FROM
titles_test a,
( SELECT MIN( id ) AS id, emp_no FROM titles_test GROUP BY emp_no HAVING COUNT( emp_no ) > 1 ) AS b
WHERE
a.emp_no = b.emp_no
AND a.id > b.id
) t
)
方法二:
逆向思维-找出所有不需要删除的记录 id
- 找出所有 emp_no 组中最小的 id 集合
- 根据 id 删除数据
DELETE
FROM
titles_test
WHERE
id NOT IN (
SELECT
MIN( id )
FROM
titles_test
GROUP BY
emp_no)