MySQL クエリで ANSI 1992 JOIN 構文とカンマを混在して使用するとエラーが発生する理由
MySQL クエリで複数のテーブルを結合する場合は、一貫して ANSI 1992 JOIN 構文またはカンマ区切り表記を使用してください。これら 2 つの方法を混合すると、「'on 句' に不明な列 'm.id'」エラーなどのエラーが発生する可能性があります。
エラーの理由
次のクエリ内:
<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 中国語 Web サイトの他の関連記事を参照してください。