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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-09 10:46:49425ブラウズ

Why Does Mixing JOINs and Commas in MySQL Queries Cause

MySQL クエリで JOIN とカンマを混合するとエラーが発生する

問題の説明

次の MySQL クエリを実行する場合:

<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>

次のエラーが発生します:

<code>#1054 - Unknown column 'm.id' in 'on clause'</code>

列が存在するにもかかわらず、クエリは失敗します。このエラーは、ANSI 1992 JOIN 構文とカンマがクエリ内で一緒に使用されている場合に発生します。

解決策

MySQL のドキュメントによると、JOIN とカンマの混合は避けるべきです。この問題を解決するには、カンマを適切な JOIN 演算子 (CROSS、INNER、LEFT) に置き換えます。

INNER JOIN を使用して更新されたクエリは次のとおりです:

<code class="language-sql">SELECT m.*, t.*
FROM memebers as m
INNER JOIN telephone as t ON <join condition>
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>

デカルト積を避けるために、mt の間の結合条件を指定する必要があることに注意してください。

追加メモ

明確さと効率のために、カンマの代わりに JOIN 演算子を使用する必要があります。カンマは CROSS JOIN を示します。これにより、特に複数のテーブルを結合する場合に、予期しない動作が発生する可能性があります。明示的な JOIN 演算子を使用すると、テーブル間の特定の関係を定義して、必要な結果を確実に得ることができます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。