高效删除 MySQL 中的孤立记录:三种行之有效的方法
本指南演示了在 MySQL 中删除孤立行的三种有效技术 - 基于共享 ID 的相关表中缺少相应记录的数据库条目。
方法 1:利用 LEFT JOIN 和 IS NULL
此方法利用 LEFT JOIN
根据特定 ID 列组合来自两个表的数据。 然后,由连接表 ID 列中的 NULL
值标识的孤立行将被作为删除目标。
<code class="language-sql">DELETE b FROM BLOB b LEFT JOIN FILES f ON f.id = b.fileid WHERE f.id IS NULL;</code>
方法2:雇佣不存在
此方法使用带有 NOT EXISTS
的子查询来检查相关表中是否存在匹配记录。缺少匹配的行将被标记为删除。
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS (SELECT NULL FROM FILES f WHERE f.id = fileid);</code>
方法3:利用NOT IN
这种简单的方法使用 NOT IN
直接比较 ID。 相关表中缺少 ID 的行将被识别并删除。
<code class="language-sql">DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id FROM FILES f);</code>
重要考虑因素:
始终在事务中执行DELETE
语句以确保数据完整性。 这允许在发生错误或意外后果时进行回滚。 在 START TRANSACTION
之前使用 DELETE
,之后使用 COMMIT
(或 ROLLBACK
)。
以上是如何使用 JOIN、NOT EXISTS 或 NOT IN 删除 MySQL 中的孤立行?的详细内容。更多信息请关注PHP中文网其他相关文章!