排除 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中文網其他相關文章!