sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL accepterar inte kolumnalias i WHERE-satsen

Du ställer två frågor:
1.

Varför kan jag inte hänvisa till SELECT-kostnadsaliaset i WHERE-satsen?

2.

Men varför beställa efter kostnad desc; är tillåtet?


Manualen har ett svar för dem båda här:

En utdatakolumns namn kan användas för att referera till kolumnens värde iORDER BY och GROUP BY satser, men inte i WHERE eller HAVING klausuler; där måste du skriva ut uttrycket istället.

Det definieras av SQL-standarden och anledningen är händelseförloppet i en SELECT fråga. Vid tiden WHERE satser tillämpas, utdatakolumner i SELECT Listan har ännu inte beräknats. Men när det gäller ORDER BY , utdatakolumner är lättillgängliga.

Så även om det här är obekvämt och förvirrande till en början, är det ändå lite vettigt.

Relaterat:

  • PostgreSQL Where count condition
  • Bästa sättet att få resultaträkningen innan LIMIT tillämpades



  1. Fel:Det finns tabellutrymme för tabell xxx. Vänligen KASSA tabellutrymmet före IMPORT

  2. SQL Server Change Recovery Model

  3. Villkorlig lead/lag-funktion PostgreSQL?

  4. Använda en vy utan primärnyckel med Entity