Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement les alias dans la clause WHERE de PostgreSQL ?
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!