Maison > base de données > tutoriel mysql > Puis-je utiliser des alias dans les clauses SQL WHERE ?

Puis-je utiliser des alias dans les clauses SQL WHERE ?

Linda Hamilton
Libérer: 2024-12-26 15:47:10
original
762 Les gens l'ont consulté

Can I Use Aliases in SQL WHERE Clauses?

Référencement des alias dans les clauses WHERE

En SQL, l'ordre d'exécution des instructions dans une requête est crucial. En particulier, la clause WHERE est exécutée avant l'instruction SELECT. Cela signifie que lors du référencement d'un alias dans la clause WHERE, celui-ci doit avoir été défini avant de tenter de l'utiliser.

Requête originale et erreur

La requête suivante tente de utilisez un alias (_year) dans la clause WHERE :

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    _year > 90
Copier après la connexion

Cependant, cette requête soulève un erreur :

ERROR:  column "_year" does not exist
LINE 1: ...STRING (pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90...
                                                              ^
********** Error **********

ERROR: column "_year" does not exist
Copier après la connexion

Cette erreur se produit car l'alias (_year) n'est pas défini avant l'instruction SELECT.

Surmonter la limitation

Il Il n'est pas possible de référencer directement un alias dans la clause WHERE en raison de l'ordre d'exécution des instructions SQL. Pour éviter cette limitation, réécrivez la requête comme suit :

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
SUBSTRING(pk, 6, 2)::INT > 90
Copier après la connexion

Dans cette requête, l'expression pour calculer _year est répétée dans la clause WHERE. Bien que cela ne soit pas aussi concis que l'utilisation d'un alias, cela garantit que la valeur de _year est calculée avant d'être utilisée dans la comparaison.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal