Maison >base de données >tutoriel mysql >Comment utiliser les alias dans les clauses WHERE de PostgreSQL sans erreurs ?
Éviter les erreurs « la colonne n'existe pas » lors de l'utilisation d'alias dans les clauses WHERE de PostgreSQL
Les requêtes PostgreSQL peuvent générer une erreur « la colonne n'existe pas » lors de l'utilisation d'alias dans la clause WHERE
, même si l'alias est défini dans la liste SELECT
. Cela se produit parce que la clause WHERE
est traitée avant la liste SELECT
, ce qui signifie que l'alias n'est pas encore reconnu.
Pour surmonter ce problème, utilisez une clause WITH
(également connue sous le nom d'expression de table commune ou CTE). Une clause WITH
crée un jeu de résultats nommé temporaire, vous permettant de référencer l'alias dans la requête principale.
Voici un exemple illustrant la solution :
<code class="language-sql">WITH jobs_with_lead_state AS ( SELECT jobs.*, CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END AS lead_state FROM jobs LEFT JOIN lead_informations ON lead_informations.job_id = jobs.id AND lead_informations.mechanic_id = 3 ) SELECT * FROM jobs_with_lead_state WHERE lead_state = 'NEW';</code>
Cette requête révisée définit un CTE nommé jobs_with_lead_state
. Le CTE effectue les opérations initiales SELECT
et JOIN
, générant l'alias lead_state
. La requête principale utilise alors ce CTE, permettant à la clause WHERE
de référencer correctement lead_state
. Cette approche évite l'erreur en garantissant que l'alias est disponible lors de l'évaluation de la clause WHERE
.
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!