ホームページ > データベース > mysql チュートリアル > MySQL クエリに ANSI 1992 JOIN とカンマを混在させると「不明な列」エラーが発生するのはなぜですか?

MySQL クエリに ANSI 1992 JOIN とカンマを混在させると「不明な列」エラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2025-01-09 11:06:41
オリジナル
742 人が閲覧しました

Why Does Mixing ANSI 1992 JOINs and Commas in MySQL Queries Cause

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>
ログイン後にコピー

その他の注意事項

基準を何も指定していないため、変更されたクエリでは mt の間の相互結合が想定されていることに注意してください。必要に応じて、適切な結合条件を含めるようにクエリを変更する必要がある場合があります。 例として仮説的な結合条件 ON m.id = t.member_id を追加しました。実際のデータベース テーブル構造に基づいてこの条件を変更する必要があります。

以上がMySQL クエリに ANSI 1992 JOIN とカンマを混在させると「不明な列」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート