ホームページ >データベース >mysql チュートリアル >SQL WHERE 句でエイリアスを使用できますか?

SQL WHERE 句でエイリアスを使用できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 15:47:10756ブラウズ

Can I Use Aliases in SQL WHERE Clauses?

WHERE 句でのエイリアスの参照

SQL では、クエリ内のステートメントの実行順序が重要です。特に、WHERE 句は SELECT ステートメントの前に実行されます。これは、WHERE 句でエイリアスを参照する場合、エイリアスを使用する前にそのエイリアスを定義しておく必要があることを意味します。

元のクエリとエラー

次のクエリは、 WHERE 句でエイリアス (_year) を使用します:

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

ただし、このクエリではエラー:

ERROR:  column "_year" does not exist
LINE 1: ...STRING (pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90...
                                                              ^
********** Error **********

ERROR: column "_year" does not exist

このエラーは、SELECT ステートメントまで別名 (_year) が定義されていないために発生します。

制限の克服

SQL ステートメントの実行順序により、WHERE 句でエイリアスを直接参照することはできません。この制限を回避するには、クエリを次のように書き換えます。

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

このクエリでは、_year を計算する式が WHERE 句で繰り返されます。エイリアスを使用するほど簡潔ではありませんが、これにより、比較で使用される前に _year の値が確実に計算されます。

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

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