PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL não aceita alias de coluna na cláusula WHERE


Você faz duas perguntas:
1.

Por que não posso fazer referência ao alias de custo SELECT na cláusula WHERE?

2.

Mas por que ordem por custo desc; é permitido?




O manual tem uma resposta para ambos aqui:

O nome de uma coluna de saída pode ser usado para se referir ao valor da coluna em ORDER BY e GROUP BY cláusulas, mas não no WHERE ou HAVING cláusulas; lá você deve escrever a expressão em vez disso.

É definido pelo padrão SQL e o motivo é a sequência de eventos em um SELECT inquerir. No momento WHERE cláusulas são aplicadas, colunas de saída no SELECT lista ainda não foi computada. Mas quando se trata de ORDER BY , as colunas de saída estão prontamente disponíveis.

Então, embora isso seja inconveniente e confuso no começo, ainda faz sentido.

Relacionado:
  • PostgreSQL Where count condition
  • Melhor maneira de obter a contagem de resultados antes da aplicação de LIMIT