排除 MySQL“NOT IN”查询错误
用户最近在尝试看似简单的 MySQL 查询时遇到语法错误。 目标是从 Table1
中选择 principal
列值不存在于 Table2
中的所有行。 最初的错误查询是:
<code class="language-sql">SELECT * FROM Table1 WHERE Table1.principal NOT IN Table2.principal</code>
这会产生一个错误,导致用户根据相互冲突的在线建议相信 MySQL 可能不支持 NOT IN
子句。 一些消息来源提出了复杂的解决方法。
然而,MySQL 确实支持NOT IN
,但上面使用的语法有缺陷。正确的语法需要子查询:
<code class="language-sql">SELECT * FROM Table1 WHERE Table1.principal NOT IN (SELECT principal FROM Table2)</code>
此修订后的查询使用子查询 (SELECT principal FROM Table2)
来显式定义 principal
中的 Table2
值集。 然后,MySQL 会正确地将每个 Table1.principal
值与该集合进行比较,仅返回 未 找到匹配项的行。
最初的错误完全源于 NOT IN
运算符的错误应用。 子查询的包含为数据库提供了成功执行查询并产生预期结果所需的结构。
以上是为什么我的 MySQL'NOT IN”查询失败,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!