Maison >base de données >tutoriel mysql >Comment puis-je référencer correctement les alias dans une clause SQL WHERE ?

Comment puis-je référencer correctement les alias dans une clause SQL WHERE ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 14:03:14849parcourir

How Can I Correctly Reference Aliases in a SQL WHERE Clause?

Référencement des alias dans la clause WHERE

Lorsque vous travaillez avec des requêtes SQL, il est souvent nécessaire d'utiliser des alias pour donner des noms temporaires aux tables ou aux expressions . Cela peut améliorer la lisibilité et la maintenabilité de votre code. Cependant, il est important d'être conscient des limites lors du référencement d'alias dans différentes parties de la requête.

Le problème

Dans l'exemple fourni, une tentative est faite pour référencer un alias (_year) dans la clause WHERE d'une requête. Cependant, cela entraîne une erreur :

ERROR:  column "_year" does not exist

Cette erreur se produit car la clause WHERE est exécutée en premier, avant la clause SELECT. Au moment de l'exécution, la base de données n'a pas encore rencontré la définition d'alias dans la clause SELECT et ne peut donc pas la reconnaître.

Solution

Pour contourner ce problème, vous pouvez réécrire la requête afin que l'alias soit défini dans la clause WHERE elle-même. Cela garantit que l'alias est disponible lorsque la clause WHERE est exécutée :

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

En plaçant la définition de l'alias dans la clause WHERE, vous pouvez référencer l'alias dans la même clause, sans rencontrer d'erreurs.

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