Maison >base de données >tutoriel mysql >Puis-je utiliser des alias de colonne dans les clauses WHERE ?
Référez-vous à l'alias de la colonne dans la clause WHERE
Le référencement des alias de colonnes dans la clause WHERE peut parfois provoquer des erreurs lors du traitement des requêtes de base de données. En effet, les alias sont généralement appliqués après l'évaluation de la clause WHERE. Considérez la requête suivante :
<code class="language-sql">SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120</code>
Dans cette requête, l'erreur se produit car "daysdiff" est un alias de colonne créé dans l'instruction SELECT. Pour référencer un alias dans une clause WHERE, vous pouvez forcer SQL à évaluer l'instruction SELECT avant la clause WHERE. Ceci peut être réalisé en utilisant des parenthèses ou des expressions de table communes (CTE).
Support/Sous-requête :
<code class="language-sql">SELECT * FROM ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) as innerTable WHERE daysdiff > 120</code>
CTE :
<code class="language-sql">WITH CTE AS ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) SELECT * FROM CTE WHERE daysdiff > 120</code>
En utilisant des parenthèses ou un CTE, l'instruction SELECT est évaluée avant la clause WHERE, vous permettant de référencer les alias de colonnes dans la clause WHERE sans erreur.
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!