Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser d'alias dans la clause WHERE d'une requête PostgreSQL ?

Pourquoi ne puis-je pas utiliser d'alias dans la clause WHERE d'une requête PostgreSQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-27 12:45:11892parcourir

Why Can't I Use Aliases in the WHERE Clause of a PostgreSQL Query?

Référencement d'alias dans la clause WHERE : une exploration

Dans PostgreSQL (psql), il n'est pas directement possible de référencer des alias dans la clause WHERE en raison à l'ordre d'exécution. La clause WHERE est exécutée avant que les alias ne soient appliqués, ce qui entraîne l'erreur "la colonne "_year" n'existe pas."

Cela se produit car la clause WHERE opère sur les noms de colonnes d'origine et l'alias n'est appliqué que plus tard. , lors de la génération de l'ensemble de résultats. Par conséquent, l'alias n'est pas reconnu lorsque la clause WHERE est exécutée.

Pour résoudre ce problème, la requête doit être réécrite pour utiliser le nom de colonne d'origine directement dans la clause WHERE. Par exemple, considérons la requête :

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    _year > 90;

Cette requête échouera avec l'erreur "la colonne "_year" n'existe pas." Pour résoudre ce problème, l'alias doit être remplacé par le nom de colonne d'origine dans la clause WHERE :

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    SUBSTRING(pk, 6, 2)::INT > 90;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn