删除ID与另一个表不匹配的SQL行
我正在尝试删除mysql表中的孤立条目。
我有2张桌子,像这样:
表files
:
| id | ....------------
| 1 | ....
| 2 | ....
| 7 | ....
| 9 | ....
表blob
:
| fileid | ....------------
| 1 | ....
| 2 | ....
| 3 | ....
| 4 | ....
| 4 | ....
| 4 | ....
| 9 | ....
该fileid
和id
列可以被用来连接表在一起。
我想删除表blob
中所有在表中fileid
找不到的行files.id
。
因此,使用上面的示例将删除表中的行:3&4(s)blob
。
回答:
回答:
DELETE b FROM BLOB b LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL
回答:
DELETE FROM BLOB WHERE NOT EXISTS(SELECT NULL
FROM FILES f
WHERE f.id = fileid)
回答:
DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id
FROM FILES f)
回答:
只要有可能,就在事务中执行DELETE(假设受支持-IE:不在MyISAM上),以便在出现问题时可以使用回滚来还原更改。
以上是 删除ID与另一个表不匹配的SQL行 的全部内容, 来源链接: utcz.com/qa/403599.html