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
Linda Hamiltonoriginal
2024-12-26 15:47:10756parcourir

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

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

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

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!

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