ホームページ >データベース >mysql チュートリアル >SQL クエリでエイリアスを使用すると「Where 句の不明な列」が発生するのはなぜですか?
SQL エラー: 「Where 句の不明な列」
次のような SQL クエリを実行する場合:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
「where 句に不明な列 'user_name'」エラーが発生する場合があります。このエラーは、SQL の解析順序が右から左であるために発生します。
具体的には、WHERE
句は SELECT
句の前に解析されます。 WHERE
句が解析されるとき、エイリアス "user_name" はまだ "u_name" 列に適用されていません。したがって、データベースは「user_name」を不明な列として解釈し、エラーをスローします。
この問題を解決するには、WHERE
句で元の列名「u_name」を使用できます。
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
また、WHERE
句で別名を使用する前に、サブクエリを使用して列に別名を付けることもできます。
<code class="language-sql">SELECT user_name FROM (SELECT u_name AS user_name FROM users) AS subquery WHERE user_name = "john";</code>
以上がSQL クエリでエイリアスを使用すると「Where 句の不明な列」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。