首頁 >資料庫 >mysql教程 >為什麼在 MySQL 查詢中混合 ANSI 1992 連線和逗號會導致錯誤?

為什麼在 MySQL 查詢中混合 ANSI 1992 連線和逗號會導致錯誤?

Barbara Streisand
Barbara Streisand原創
2025-01-09 10:51:42659瀏覽

Why Does Mixing ANSI 1992 Joins and Commas in MySQL Queries Cause Errors?

MySQL 查詢中混合使用 ANSI 1992 JOIN 語法和逗號導致錯誤的原因

在 MySQL 查詢中連接多個資料表時,請務必一致地使用 ANSI 1992 JOIN 語法或逗號分隔表示法。混合使用這兩種方法會導致錯誤,例如 "Unknown column 'm.id' in 'on clause'" 錯誤。

錯誤原因

在以下查詢中:

<code class="language-sql">SELECT m.*, t.*
FROM memebers as m, telephone as t
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber
WHERE mf.function = 32</code>

此查詢嘗試混合使用逗號表示法(用於連接 m 和 t)和 ANSI 1992 JOIN 語法(用於連接 mf 和 mt)。根據 MySQL 文檔,這種方法不再受支援。逗號運算子的優先權現在低於 JOIN,導致操作數解釋錯誤。

要解決此問題,請一致地使用逗號表示法或 ANSI 1992 JOIN 語法。為提高清晰度和可靠性,建議使用 JOIN 語法:

<code class="language-sql">SELECT m.*, t.*
FROM memebers AS m
JOIN telephone AS t ON m.id = t.id
JOIN memeberFunctions AS mf ON m.id = mf.memeber AND mf.function = 32
JOIN mitgliedTelephone AS mt ON m.id = mt.memeber</code>

注意事項

  • 請注意,上述查詢在 m 和 t 之間執行笛卡爾積,這可能會導致資料集非常龐大。務必在查詢中包含適當的篩選條件。
  • 如果使用逗號表示法,請確保指定所需的連接類型(例如,JOIN、LEFT JOIN、RIGHT JOIN)。否則,預設值為內部連接,這在某些情況下可能並非所需連接類型。

以上是為什麼在 MySQL 查詢中混合 ANSI 1992 連線和逗號會導致錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn