Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement les alias dans la clause WHERE de PostgreSQL ?

Comment puis-je utiliser correctement les alias dans la clause WHERE de PostgreSQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 06:10:10599parcourir

How Can I Correctly Use Aliases in PostgreSQL's WHERE Clause?

Référencement des alias dans les clauses WHERE dans Postgres

Dans PostgreSQL, faire référence aux alias dans la clause WHERE peut conduire à des erreurs telles que "la colonne ne exister." Cela se produit car la clause WHERE s'exécute avant que les alias ne soient définis dans la clause SELECT.

Pourquoi ce n'est pas possible

En SQL, les clauses sont exécutées dans un ordre spécifique : WHERE , FROM, GROUP BY, HAVING, SELECT, ORDER BY. Cela signifie que lorsque Postgres rencontre la clause WHERE, il ne connaît pas encore les alias que vous avez définis dans la clause SELECT.

Solution

Pour résoudre ce problème, vous devez réécrire votre requête pour éviter d'utiliser des alias dans la clause WHERE. Au lieu de cela, spécifiez directement l’expression à comparer. Par exemple, la requête suivante sélectionne correctement les lignes où les deuxième à sixième caractères de la colonne « pk », convertis en nombre entier, sont supérieurs à 90 :

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

Remarque : Ceci la limitation s'applique uniquement aux alias définis dans la clause SELECT. Les alias définis dans d'autres clauses, telles que FROM ou JOIN, peuvent être utilisés dans les clauses suivantes.

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