ホームページ >データベース >mysql チュートリアル >SQL WHERE 句でエイリアスを使用できますか?
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 サイトの他の関連記事を参照してください。