Fai due domande:
1.
Perché non posso fare riferimento all'alias di costo SELECT nella clausola WHERE?
2.
Ma perché ordinare per costo desc; è consentito?
Il manuale ha una risposta per entrambi qui:
Il nome di una colonna di output può essere utilizzato per fare riferimento al valore della colonna inORDER BY
e GROUP BY
clausole, ma non in WHERE
o HAVING
clausole; lì devi invece scrivere l'espressione.
È definito dallo standard SQL e il motivo è la sequenza di eventi in un SELECT
interrogazione. Al momento WHERE
vengono applicate clausole, colonne di output in SELECT
elenco non sono stati ancora calcolati. Ma quando si tratta di ORDER BY
, le colonne di output sono prontamente disponibili.
Quindi, sebbene all'inizio sia scomodo e confuso, ha comunque un senso.
Correlati:
- Condizione Where di PostgreSQL
- Il modo migliore per ottenere il conteggio dei risultati prima dell'applicazione del LIMIT