我有一个代码,它列出了数据库中数据的所有重复项
SELECT MAX(id) id
FROM el_student_class_relation
GROUP BY student_id, class_id
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)
现在,我试图保留 MAX(id),然后应删除其余的重复项
我尝试了代码
DELETE us
FROM el_student_class_relation us
INNER JOIN(SELECT MAX(id) id
FROM el_student_class_relation
GROUP BY student_id, class_id HAVING COUNT(*) > 1) t ON t.id = us.id
Run Code Online (Sandbox Code Playgroud)
但它删除了 MAX(ID) 并保留了其他重复项,这与我想要的相反。
DELETE FROM el_student_class_relation
WHERE id not in
(
SELECT * from
(SELECT MAX(id) id
FROM el_student_class_relation
GROUP BY student_id, class_id) temp_tbl
)
Run Code Online (Sandbox Code Playgroud)
请注意:不要在内部查询中使用HAVING COUNT(*) > 1 。当只有一条具有相同 id 的记录时,它会产生问题。