Postgres の WHERE 句でのエイリアスの参照
PostgreSQL では、WHERE 句でエイリアスを参照すると、「列が存在しません」のようなエラーが発生する可能性があります。存在する。"これは、SELECT 句でエイリアスが定義される前に WHERE 句が実行されるために発生します。
それが不可能な理由
SQL では、句は特定の順序で実行されます: WHERE 、FROM、GROUP BY、HAVING、SELECT、ORDER BY。これは、Postgres が WHERE 句に遭遇したとき、SELECT 句で定義されたエイリアスをまだ認識していないことを意味します。
解決策
この問題を解決するには、次のようにします。 WHERE 句でエイリアスを使用しないようにクエリを書き直す必要があります。代わりに、比較する式を直接指定します。たとえば、次のクエリは、整数としてキャストされた「pk」列の 2 番目から 6 番目の文字が 90 より大きい行を正しく選択します。
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90
注: これこの制限は、SELECT 句で定義されたエイリアスにのみ適用されます。 FROM や JOIN など、他の句で定義されたエイリアスは、後続の句で使用できます。
以上がPostgreSQL の WHERE 句でエイリアスを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。