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

PostgreSQL accepterer ikke kolonnealias i WHERE-klausulen

Du stiller to spørgsmål:
1.

Hvorfor kan jeg ikke henvise til SELECT-omkostningsaliaset ved WHERE-klausulen?

2.

Men hvorfor bestille efter omkostninger desc; er tilladt?


Manualen har et svar til dem begge her:

En outputkolonnes navn kan bruges til at henvise til kolonnens værdi iORDER BY og GROUP BY klausuler, men ikke i WHERE eller HAVING klausuler; der skal du i stedet skrive udtrykket ud.

Det er defineret af SQL-standarden og årsagen er rækkefølgen af ​​hændelser i en SELECT forespørgsel. På det tidspunkt WHERE klausuler anvendes, outputkolonner i SELECT listen er endnu ikke beregnet. Men når det kommer til ORDER BY , outputkolonner er let tilgængelige.

Så selvom dette er ubelejligt og forvirrende i starten, giver det stadig en vis mening.

Relateret:

  • PostgreSQL Where count condition
  • Bedste måde at få resultattælling, før LIMIT blev anvendt



  1. Automatiseret test af opgraderingsprocessen til PXC/MariaDB Galera Cluster

  2. Databasekorrpution i MS Access og hvordan man handler

  3. SQL primær nøgle

  4. Oprettelse af midlertidige tabeller i SQL