![](/img/trans.png)
[英]How to select rows with LEFT JOIN if specified value exists in joined table?
[英][SQL]How to delete all rows containing NULL value on the joined table column using LEFT JOIN and DELETE
我试图摆脱与另一张表没有关系的每一行。
这是我尝试的:
DELETE obj FROM objednavky obj
LEFT JOIN polozky_objednavek poObj
ON poObj.objednavka_id = obj.id
WHERE poObj.objednavka_id = null
DELETE仅在一个表上工作,因此不应将其联接。 您可以在WHERE子句中使用另一个表,如下所示:
DELETE FROM objednavky obj
WHERE( SELECT objednavka_id FROM polozky_objednavek WHERE objednavka_id=objednavky.id) IS NULL
如果您是手动执行此操作,建议您首先运行SELECT子句(或至少运行COUNT变体),以确保您不会意外擦除整个表。
您可以使用NOT EXISTS
。 尝试这个:
DELETE FROM objednavky obj
WHERE NOT EXISTS (
SELECT
*
FROM
polozky_objednavek poObj
WHERE
`poObj`.`objednavka_id` = `obj`.`id`);
DELETE obj FROM objednavky obj LEFT JOIN polozky_objednavek poObj ON poObj.objednavka_id = obj.id WHERE poObj.objednavka_id IS null
感谢@forpas的评论,我只需要更改:
item = NULL至
项目为NULL并按照我的需要精确地工作。 请记住,SQL不支持这种类型的比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.