Je stelt twee vragen:
1.
Waarom kan ik niet verwijzen naar de SELECT-kostenalias in de WHERE-clausule?
2.
Maar waarom bestellen op kostenbeschrijving; is toegestaan?
De handleiding heeft hier een antwoord op beide:
De naam van een uitvoerkolom kan worden gebruikt om te verwijzen naar de waarde van de kolom in
ORDER BY
enGROUP BY
clausules, maar niet in deWHERE
ofHAVING
clausules; daar moet je in plaats daarvan de uitdrukking uitschrijven.
Het wordt gedefinieerd door de SQL-standaard en de reden is de volgorde van gebeurtenissen in een SELECT
vraag. Op het moment WHERE
clausules worden toegepast, uitvoerkolommen in de SELECT
lijst zijn nog niet berekend. Maar als het gaat om ORDER BY
, uitvoerkolommen zijn direct beschikbaar.
Dus hoewel dit in het begin onhandig en verwarrend is, is het toch een beetje logisch.
Gerelateerd:
- PostgreSQL Where count-voorwaarde
- De beste manier om het aantal resultaten te krijgen voordat LIMIT werd toegepast