首页 > 数据库 > mysql教程 > 如何使用 JOIN、NOT EXISTS 或 NOT IN 删除 MySQL 中的孤立行?

如何使用 JOIN、NOT EXISTS 或 NOT IN 删除 MySQL 中的孤立行?

Mary-Kate Olsen
发布: 2025-01-24 22:27:10
原创
983 人浏览过

How to Delete Orphan Rows in MySQL Using JOINs, NOT EXISTS, or NOT IN?

高效删除 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板