ホームページ >データベース >mysql チュートリアル >PostgreSQL クエリの WHERE 句でエイリアスを使用できないのはなぜですか?

PostgreSQL クエリの WHERE 句でエイリアスを使用できないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-27 12:45:11892ブラウズ

Why Can't I Use Aliases in the WHERE Clause of a PostgreSQL Query?

WHERE 句でのエイリアスの参照: 探索

PostgreSQL (psql) では、次の理由により、WHERE 句でエイリアスを直接参照することはできません。実行命令に。エイリアスが適用される前に WHERE 句が実行され、「列 "_year" が存在しません」というエラーが発生します。

これは、WHERE 句が元の列名に対して動作し、エイリアスが後でのみ適用されるために発生します。 、結果セットの生成中。したがって、WHERE 句の実行時にエイリアスは認識されません。

この問題を解決するには、WHERE 句で元の列名を直接使用するようにクエリを書き直す必要があります。たとえば、次のクエリを考えてみます。

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    _year > 90;

このクエリは、「列 "_year" が存在しません」というエラーで失敗します。これを修正するには、WHERE 句でエイリアスを元の列名に置き換える必要があります:

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    SUBSTRING(pk, 6, 2)::INT > 90;

以上がPostgreSQL クエリの WHERE 句でエイリアスを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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