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

标签 mysql

我有一个表,其中存在具有以下属性的重复记录:

  1. 主要_ID
  2. 评论

现在的问题是存在具有相同主键但不同“注释”的重复记录。 记录的存在方式如下:

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

相关文章:

mysql - SQL语法中的第二个条件

php - 使用 * 和 % 的匹配语句均不返回精确结果

mysql - 我无法通过 RoR 访问我自己的 MySQL 服务器?

c# - 插入查询中的 MySQL 语法错误 1064

mysql - 有很多属性的表

php - 当表 2 id = x 时,Laravel 5 Eloquent 选择表 1 中与表 2 中没有关系的项目

具有多个变量组件的 PHP MySQL 语句

php - 修改函数如何获取和查询数据库?

php - 使用 php 和 Codeigniter 备份 SQL 表

带有变量的 Php mysql select 语句(无效参数编号 : number of bound variables does not match number of tokens)