sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL accepteert geen kolomalias in WHERE-clausule

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 inORDER BY en GROUP BY clausules, maar niet in de WHERE of HAVING 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



  1. Hiërarchische lijst met typen triggergebeurtenissen in SQL Server 2019

  2. ORACLE IIF-verklaring

  3. Een CTE maken in Oracle

  4. Een LINKER SEMI JOIN doen in SQL Server