ホームページ > データベース > mysql チュートリアル > SQL クエリが「Where 句の不明な列」を返すのはなぜですか?

SQL クエリが「Where 句の不明な列」を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-17 16:06:14
オリジナル
331 人が閲覧しました

Why Does My SQL Query Return

「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_nameSELECT 句でのみ定義されます。 WHERE 句が最初に処理されるため、まだこのエイリアスに遭遇していないため、「不明な列」エラーが発生します。

解決策:

これを修正するには 2 つの簡単な方法があります:

  1. WHERE 句で元の列名を使用します。 これは最も単純で効率的な解決策です。 列を別名ではなく実際の名前で参照します:

    <code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
    ログイン後にコピー
  2. エイリアス化された列を括弧で囲みます: この方法では、 句を評価するWHEREにデータベースにエイリアスを解決するよう強制します。 機能しますが、通常、元の列名を使用するよりも効率が低くなります:

    <code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
    ログイン後にコピー

SQL の評価順序を理解し、これらの解決策のいずれかを採用することで、「Where 句の不明な列」エラーを効果的に解決できます。

以上がSQL クエリが「Where 句の不明な列」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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