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