Zadajesz dwa pytania:
1.
Dlaczego nie mogę odwołać się do aliasu kosztów SELECT w klauzuli WHERE?
2.
Ale po co zamawiać według kosztu; jest dozwolone?
W instrukcji znajdziesz odpowiedź na oba z nich:
Nazwa kolumny wyjściowej może być używana do odwoływania się do wartości kolumny w ORDER BY
i GROUP BY
klauzul, ale nie w WHERE
lub HAVING
klauzule; tam musisz zamiast tego napisać wyrażenie.
Jest zdefiniowany przez standard SQL a powodem jest kolejność zdarzeń w SELECT
zapytanie. W tym czasie WHERE
klauzule są stosowane, kolumny wyjściowe w SELECT
lista nie została jeszcze obliczona. Ale jeśli chodzi o ORDER BY
, kolumny wyjściowe są łatwo dostępne.
Więc chociaż na początku jest to niewygodne i mylące, to nadal ma sens.
Powiązane:
- PostgreSQL Warunek gdzie zliczanie
- Najlepszy sposób na uzyskanie liczby wyników przed zastosowaniem LIMITu