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