PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL n'accepte pas les alias de colonne dans la clause WHERE

Vous posez deux questions :
1.

Pourquoi ne puis-je pas faire référence à l'alias de coût SELECT dans la clause WHERE ?

2.

Mais pourquoi commander par coût desc ; est autorisé ?


Le manuel a une réponse pour les deux ici :

Le nom d'une colonne de sortie peut être utilisé pour faire référence à la valeur de la colonne dans ORDER BY et GROUP BY clauses, mais pas dans WHERE ou HAVING clauses ; là, vous devez écrire l'expression à la place.

Il est défini par le standard SQL et la raison est la séquence d'événements dans un SELECT requête. Au moment WHERE les clauses sont appliquées, les colonnes de sortie dans le SELECT liste n'a pas encore été calculée. Mais quand il s'agit de ORDER BY , les colonnes de sortie sont facilement disponibles.

Ainsi, bien que ce soit gênant et déroutant au début, cela reste logique.

Connexe :

  • Condition PostgreSQL Where count
  • Meilleur moyen d'obtenir le nombre de résultats avant l'application de LIMIT