要删除MySQL表中在另一个表中缺少对应ID的条目,请遵循以下方法:
DELETE b FROM BLOB b
LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL
此查询使用LEFT JOIN来匹配“BLOB”和“FILES”表之间的行。它删除“BLOB”中“FILES”中对应的“id”列为NULL的行,表明存在孤立条目。
DELETE FROM BLOB
WHERE NOT EXISTS(SELECT NULL
FROM FILES f
WHERE f.id = fileid)
此查询使用子查询来检查“BLOB”的每一行在“FILES”中是否存在匹配的行。如果不存在匹配项,则外部查询将从“BLOB”中删除该行。
DELETE FROM BLOB
WHERE fileid NOT IN (SELECT f.id
FROM FILES f)
此查询使用NOT IN运算符来识别“BLOB”表中在“FILES”表中不存在“fileid”值的那些行,从而有效地删除孤立条目。
执行DELETE操作时,如果您的数据库引擎支持(例如,不是MyISAM),请考虑使用事务。这允许您在发生错误时回滚更改。
以上是如何根据不匹配的ID删除MySQL中的孤立行?的详细内容。更多信息请关注PHP中文网其他相关文章!