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 中国語 Web サイトの他の関連記事を参照してください。