MySQL:如何删除一列匹配的所有行,但是一个设置为" -1"?

时间:2017-04-24 20:40:14

标签: mysql sql linux

例如我说:

+-------------+-----------+-------------+--------+
| module      | module_id | document_no | status |
+-------------+-----------+-------------+--------+
| demographic |        -1 |        1237 | A      |
| demographic |       475 |        1237 | A      |
+-------------+-----------+-------------+--------+

想象一下,有成千上万的document_no实例,其中有些实例只有" -1"有些人的module_id不是-1,也不是" -1"。如何使用" -1"的module_id删除所有行?当它不是该document_no的唯一module_id时?

1 个答案:

答案 0 :(得分:3)

使用子查询加入表,该子查询返回包含另一个module_id的所有文档编号。

DELETE t1
FROM yourTable AS t1
JOIN (SELECT DISTINCT document_no
      FROM yourTable
      WHERE module_id != -1) AS t2
ON t1.document_no = t2.document_no
WHERE t1.module_id = -1