ホームページ >データベース >mysql チュートリアル >SQL クエリが「Where 句の不明な列」を返すのはなぜですか?
「Where 句の不明な列」SQL エラーについて
恐ろしい「Where 句の不明な列」エラーは、SQL ステートメント内の特定の実行順序から発生します。 SQL はクエリを右から左に処理します。つまり、WHERE
句は 句の前SELECT
に評価されます。
例で説明してみましょう:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
ここで、WHERE
句は user_name
を使用してフィルタリングを試みます。ただし、エイリアス user_name
は SELECT
句でのみ定義されます。 WHERE
句が最初に処理されるため、まだこのエイリアスに遭遇していないため、「不明な列」エラーが発生します。
解決策:
これを修正するには 2 つの簡単な方法があります:
WHERE
句で元の列名を使用します。 これは最も単純で効率的な解決策です。 列を別名ではなく実際の名前で参照します:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
エイリアス化された列を括弧で囲みます: この方法では、 句を評価する前WHERE
にデータベースにエイリアスを解決するよう強制します。 機能しますが、通常、元の列名を使用するよりも効率が低くなります:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
SQL の評価順序を理解し、これらの解決策のいずれかを採用することで、「Where 句の不明な列」エラーを効果的に解決できます。
以上がSQL クエリが「Where 句の不明な列」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。