根据Null或Not Null值删除重复项

时间:2014-11-12 13:47:57

标签: mysql

我有一张表,其中有重复记录,包含以下属性:

  1. Primary_ID
  2. 评论
  3. 现在的问题是,存在具有相同主键但不同“注释”的重复记录。 记录存在如下:

    +------------+-----------+
    | 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)
    

1 个答案:

答案 0 :(得分:0)

DELETE FROM myTab
WHERE Comments IS NULL 
      OR PRIMARY_ID NOT IN(SELECT PRIMARY_ID
                            FROM myTab
                            HAVING COUNT(PRIMARY_ID)>1)

修改

OR替换为AND,因为它取决于你的意思删除有重复的记录并且评论为nul