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

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

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

方法1:
DELETE FROM titles_test
WHERE id IN(
SELECT a.mid
FROM (
SELECT emp_no,MAX(id) AS mid,COUNT(id) AS num
FROM titles_test
GROUP BY emp_no
) AS a
WHERE a.num>1
)
方法2:
DELETE FROM titles_test
WHERE id NOT IN(
SELECT *
FROM (
SELECT MIN(id) AS mid
FROM titles_test
GROUP BY emp_no
) AS a
)

/*
MySQL的UPDATE或DELETE中子查询不能为同一张表,
可将查询结果再次SELECT。因此下面的写法是错误的,
DELETE FROM titles_test
WHERE id NOT IN(
SELECT MIN(id) AS mid
FROM titles_test
GROUP BY emp_no
)
*/

全部评论

相关推荐

ddd7_:跟我一模一样,加微信的hr都同一个,扫码了白年书人查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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