sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL no acepta alias de columna en la cláusula WHERE

Haces dos preguntas:
1.

¿Por qué no puedo hacer referencia al alias de costo SELECT en la cláusula WHERE?

2.

Pero, ¿por qué ordenar por costo desc; está permitido?


El manual tiene una respuesta para ambos aquí:

El nombre de una columna de salida se puede usar para hacer referencia al valor de la columna en ORDER BY y GROUP BY cláusulas, pero no en el WHERE o HAVING cláusulas; allí debe escribir la expresión en su lugar.

Está definido por el estándar SQL y la razón es la secuencia de eventos en un SELECT consulta. A la hora WHERE se aplican cláusulas, columnas de salida en el SELECT la lista aún no ha sido calculada. Pero cuando se trata de ORDER BY , las columnas de salida están disponibles.

Entonces, si bien esto es inconveniente y confuso al principio, todavía tiene sentido.

Relacionado:

  • PostgreSQL Donde cuenta la condición
  • La mejor manera de obtener el recuento de resultados antes de aplicar LIMIT