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

MySQL クエリに ANSI 1992 結合とカンマを混在させるとエラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2025-01-09 10:51:42
オリジナル
607 人が閲覧しました

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

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

メモ

  • 上記のクエリは m と t の間のデカルト積を実行するため、データセットが非常に大きくなる可能性があることに注意してください。クエリには必ず適切なフィルターを含めてください。
  • カンマ表記を使用する場合は、目的の結合タイプ (JOIN、LEFT JOIN、RIGHT JOIN など) を必ず指定してください。それ以外の場合、デフォルトは内部接続であり、場合によっては、これが望ましい接続タイプではない可能性があります。

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

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