あなたは2つの質問をします:
1。
WHERE句でSELECTコストエイリアスを参照できないのはなぜですか?
2.
しかし、なぜコストの説明で注文するのか。許可されていますか?
マニュアルには、両方の答えがここにあります:
出力列の名前を使用して、
ORDER BY
の列の値を参照できます。 およびGROUP BY
句はありますが、WHERE
にはありません またはHAVING
条項;そこで、代わりに式を書き出す必要があります。
SQL標準によって定義されています その理由は、SELECT
の一連のイベントです。 クエリ。当時のWHERE
句が適用され、SELECT
の列が出力されます リストはまだ計算されていません。しかし、ORDER BY
に関しては 、出力列はすぐに利用できます。
したがって、これは最初は不便で混乱を招きますが、それでもある程度は理にかなっています。
関連:
- PostgreSQLのカウント条件
- LIMITが適用される前に結果カウントを取得するための最良の方法