- 小问题大细节,参考文章 :
- 重点是第二个链接,第一个链接的思路是好的,但是第二的方法和总结更好。
- https://www.cnblogs.com/luyingfeng/p/5772262.html
- https://www.cnblogs.com/liyue-sqsf/p/9076902.html
表如下:

DELETE from S_score2 where id IN (
-- 这里再加 一个 select 语句,因为
-- 警告:不能根据本表的查询结果来更新本表的数据,所以给表起个别名
select * from (
SELECT id from S_score2
where
(姓名, 课程) in
(SELECT 姓名, 课程 FROM S_score2 GROUP BY 姓名, 课程 HAVING COUNT(*) > 1)
and
id not in (SELECT min(id) from S_score2 GROUP BY 姓名, 课程 HAVING count(*)> 1)
) as stu_score
);
总结:
这个问题看似简单,想了 很多种解法,更想了很久~ 不多说了,大家仔细看那两个链接,并且最好先以自己的思路去实现下。
结束。
删除重复记录技巧

本文介绍了一种使用SQL语句从数据库表中删除重复记录的方法。通过创建表别名并利用子查询,可以有效地找到并移除除了每个重复组中的最小ID之外的所有记录。这种方法避免了直接操作表本身可能导致的问题。

被折叠的 条评论
为什么被折叠?



