MySQL 选择另一个表中不存在的行
共享公共主表时获取表 A 中存在但不存在于表 B 中的所有行键,有几种方法可用,但性能影响各不相同。
使用带有 NOT EXISTS 的子查询:
使用 NOT EXISTS 的子查询的初始方法是可行的选项,但可能相对较慢,尤其是对于较大的数据集。
使用左联接:
正如您所发现的,左联接可以执行得更快。在共享列上连接表 A 和表 B 时,表 A 中与表 B 中任何行都不匹配的行在连接列中将具有 NULL 值。过滤这些 NULL 值可以有效地隔离所需的行。
代码示例:
<code class="sql">SELECT * FROM A LEFT JOIN B ON A.x = B.y WHERE B.y IS NULL;</code>
其他提示:
总体结论:
虽然左连接方法通常优于子查询方法,但最佳解决方案可能会有所不同,具体取决于具体的数据集和模式。建议进行实验和性能测试,以确定每种情况下最有效的方法。
以上是如何有效地从一个表中选择另一表中不存在的行?的详细内容。更多信息请关注PHP中文网其他相关文章!