MySQL クエリで ANSI 1992 JOIN とカンマを混合することによって発生する問題
MySQL クエリで、ANSI 1992 JOIN 構文とカンマ区切りのテーブル結合構文の両方を使用すると、「Unknown columns 'm.id' in 'on quote'」エラーが発生することがあります。これは、2 つの構文を混合するとクエリ構文が曖昧になる可能性があるためです。
問題の解決策
MySQL のドキュメントによると、カンマベースのテーブル結合構文 (members as m, telephone as t
など) と明示的な JOIN 句を混合することは推奨されません。これを修正するには、コンマを CROSS/INNER/LEFT JOIN
ステートメントに置き換えます。
理由の説明
以前は、カンマ演算子と JOIN の優先順位は同じでしたが、新しい MySQL バージョンでは JOIN の優先順位が高くなります。したがって、カンマ演算子は JOIN 句よりも優先されなくなりました。これは、クエリ インタープリタがオペランドを誤って分離し、ON 句でエラーが発生することを意味します。
変更されたクエリ
構文を修正するには、明示的な JOIN 句を使用してクエリを書き直します。
<code class="language-sql">SELECT m.*, t.* FROM memebers AS m JOIN telephone AS t ON m.id = t.member_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
の間の相互結合が想定されていることに注意してください。必要に応じて、適切な結合条件を含めるようにクエリを変更する必要がある場合があります。 例として仮説的な結合条件 ON m.id = t.member_id
を追加しました。実際のデータベース テーブル構造に基づいてこの条件を変更する必要があります。
以上がMySQL クエリに ANSI 1992 JOIN とカンマを混在させると「不明な列」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。