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!