sql42题解 | #删除emp_no重复的记录,只保留最小的id对应的记录。#

删除emp_no重复的记录,只保留最小的id对应的记录。

http://www.nowcoder.com/practice/3d92551a6f6d4f1ebde272d20872cf05

注意事项:mysql不允许delete from where 语句中以边查询,一边删除。为此本题采用mysql删除重复项中的where子句如使用了欲删除的表,需使用别名
解题思路:“删除重复项,取其最小id”,找出最小id集合保留,反转获得非最小id组合将其删除。

最小id组合:

SELECT MIN(id) FROM titles_test GROUP BY emp_no;

反转获得非最小id集合将其删除

DELETE FROM titles_test 
WHERE id NOT IN (SELECT * FROM (SELECT MIN(id) 
                                FROM titles_test 
                                GROUP BY emp_no) t); 
全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务