PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL non accetta alias di colonna nella clausola WHERE

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