- 小さな問題と大きな詳細については、次の記事を参照してください。
- 焦点は2番目のリンクにあります.1番目のリンクのアイデアは良いですが、2番目の方法と要約はより良いです。
- 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
);
総括する:
この質問は単純に思えます。私は多くの解決策について考えましたが、長い間考えていました〜あまり言いません。皆さん、2つのリンクを注意深く見て、独自の方法で実装するのが最善です。
終わり。