似乎不能锻炼我在这里做错了什么
SELECT * FROM tbl_imagelabel LEFT OUTER JOIN tbl_image ON tbl_imagelabel.label_id = tbl_image.label_id WHERE tbl_image.label_id is NULL
显示我想要删除的确切行.但如果我将SELECT*FROM更改为DELETE FROM它不起作用
DELETE FROM tbl_imagelabel LEFT OUTER JOIN tbl_image ON tbl_imagelabel.label_id = tbl_image.label_id WHERE tbl_image.label_id is NULL
Pau*_*eno 12
有关MySQL 5+的进一步参考:
DELETE tbl1.* FROM tbl1 LEFT JOIN tbl2 USING(fld) WHERE tbl2.fld IS NULL;
Run Code Online (Sandbox Code Playgroud)
它将使用fld作为连接删除TBL1上的任何孤儿.
GL Paulo Bueno
Nat*_*ler 10
您尝试使用该语法从单个查询中的多个表中删除.尝试更像的东西(这只是一个松散的例子,不是要优化或任何东西):
DELETE FROM tbl_imagelabel
WHERE label_id IN (
SELECT tbl_imagelabel.label_id
FROM tbl_imagelabel
LEFT OUTER JOIN tbl_image
ON tbl_imagelabel.label_id = tbl_image.label_id
WHERE tbl_image.label_id IS NULL
)
Run Code Online (Sandbox Code Playgroud)
我相信如果没有显式连接,这会做同样的事情.
DELETE FROM tbl_imagelabel
WHERE label_id NOT IN (SELECT label_id FROM tbl_image)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9825 次 |
| 最近记录: |