题目:SQL42 删除emp_no重复的记录,只保留最小的id对应的记录。
表:
解题思路:
-- 注意点:在mysql中无法先在select查询的一个表里面,按此进行更新和删除同一个表的记录
第一步:先查询titiles_test中所有按照emp_no分组后的最小的的id记录
select min(id)from titles_test group by emp_no
第二步:将查询到的记录作为一个新的表
select * from (select min(id)from titles_test group by emp_no) as zzk
第三步:删除原表中所有不是同新表的记录,得到的是删除相同的emp_no且保留最小id值的emp_no
delete from titles_test
where id not in
(
select * from
(
select min(id)
from titles_test
group by emp_no
) as T1
)