删除具有两个或多个条件的重复标题的行

时间:2018-07-21 08:23:45

标签: mysql

我有一个标题重复的表,尝试查找时可以很好地查询它们。

这是表格和代码

Table

表名称:documents

+---------- +--------+
| module_srl| title  |
+---------- +--------+
| 6225      | test21 |
| 6225      | test   |
| 6225      | test   |
| 6226      | test3  |
| 6226      | test5  |
| 6226      | test6  |
+-----------+--------+

SQL查询:

SELECT title
FROM `documents`
WHERE module_srl = 6225
GROUP BY title
HAVING COUNT( * ) >1
ORDER BY `documents`.`title` DESC

显示1的结果,其中1个重复(我想)

标题
test

如何仅删除与module_srl = 6225匹配的重复标题,而不删除原始标题。

1 个答案:

答案 0 :(得分:0)

您需要列标识符来区分重复的列。

以下查询可以删除任何重复项,而不是限制为module_srl6255。如果要限制为6255,则可以进行编辑以添加where子句。

SqlFiddle

delete from documents
where document_srl in (
    select document_srl
    from (
        select module_srl, min(document_srl) as document_srl
        from documents
        group by module_srl, title
        having count(*) > 1
    ) t