首页 > 解决方案 > [SQL]如何使用 LEFT JOIN 和 DELETE 删除连接表列上所有包含 NULL 值的行

问题描述

我试图摆脱与另一张表无关的每一行。

这是我尝试过的:

DELETE obj FROM objednavky obj 
    LEFT JOIN polozky_objednavek poObj
            ON poObj.objednavka_id = obj.id
            WHERE poObj.objednavka_id = null

标签: mysqldatabaseleft-joinsql-delete

解决方案


DELETE 只在一张表上工作,所以它不应该被加入。不过,您可以在 WHERE 子句中使用另一个表,如下所示:

DELETE FROM objednavky obj 
  WHERE( SELECT objednavka_id FROM polozky_objednavek WHERE objednavka_id=objednavky.id) IS NULL

如果您手动执行此操作,我建议先运行 SELECT 子句(或至少一个 COUNT 变体)以检查您不会意外清除整个表。


推荐阅读