我有一个表,其中存在具有以下属性的重复记录:
- 主要_ID
- 评论
现在的问题是存在具有相同主键但不同“注释”的重复记录。 记录的存在方式如下:
+------------+-----------+
| Primary_ID | Comments |
+------------+-----------+
| 1 | abc |
| 1 | null |
| 1 | abc |
| 2 | asdf |
| 3 | null |
| 4 | abc |
| 4 | null |
+------------+-----------+
我希望查询删除具有重复且注释为空的记录。 它应该是这样的:
+------------+----------+
| Primary_ID | Comments |
+------------+----------+
| 1 | abc |
| 2 | asdf |
| 3 | null |
| 4 | abc |
+------------+----------+
我尝试使用以下查询来完成此操作:
delete from myTab
where PRIMARY_ID
not in
( SELECT distinct PRIMARY_ID, COMMENT
FROM myTab)
最佳答案
DELETE FROM myTab
WHERE Comments IS NULL
OR PRIMARY_ID NOT IN(SELECT PRIMARY_ID
FROM myTab
HAVING COUNT(PRIMARY_ID)>1)
编辑:
将 OR
替换为 AND
,因为这取决于您的意思删除具有重复项且注释为空的记录
关于mysql - 根据 Null 或 Not Null 值删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888516/