我正在尝试删除 mysql 表中的孤立条目。
我有 2 个这样的表:
表files:
files
| id | .... ------------ | 1 | .... | 2 | .... | 7 | .... | 9 | ....
表blob:
blob
| fileid | .... ------------ | 1 | .... | 2 | .... | 3 | .... | 4 | .... | 4 | .... | 4 | .... | 9 | ....
fileid和id列可用于将表连接在一起。
fileid
id
我想删除表blob中fileid找不到的所有行files.id。
files.id
因此,使用上面的示例将删除blob表中的行:3 和 4(s)。
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 上),以便在出现问题时可以使用回滚来恢复更改。