ホームページ >データベース >mysql チュートリアル >MySQL クエリで JOIN とカンマを混在させると「不明な列」エラーが発生するのはなぜですか?
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>
デカルト積を避けるために、m
と t
の間の結合条件を指定する必要があることに注意してください。
追加メモ
明確さと効率のために、カンマの代わりに JOIN 演算子を使用する必要があります。カンマは CROSS JOIN を示します。これにより、特に複数のテーブルを結合する場合に、予期しない動作が発生する可能性があります。明示的な JOIN 演算子を使用すると、テーブル間の特定の関係を定義して、必要な結果を確実に得ることができます。
以上がMySQL クエリで JOIN とカンマを混在させると「不明な列」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。