Maison > base de données > tutoriel mysql > Puis-je utiliser des alias de colonne dans les expressions suivantes au sein de la même instruction SQL SELECT ?

Puis-je utiliser des alias de colonne dans les expressions suivantes au sein de la même instruction SQL SELECT ?

Susan Sarandon
Libérer: 2025-01-14 09:31:42
original
143 Les gens l'ont consulté

Can I Use Column Aliases in Subsequent Expressions Within the Same SQL SELECT Statement?

L'utilisation d'alias de colonne dans les instructions SQL SELECT dans les expressions suivantes

En SQL, vous pouvez rencontrer des situations dans lesquelles vous souhaitez utiliser des alias de colonne dans des expressions ultérieures dans la même instruction SELECT. Cependant, essayer de le faire peut entraîner une erreur similaire à celle décrite dans la question.

La raison de cette limitation est que les alias de colonnes sont traités ensemble lorsque l'instruction SELECT est évaluée. Par conséquent, les alias ne sont pas disponibles dans la même instruction SELECT.

Solution : Encapsuler la requête dans une sous-requête

Pour résoudre ce problème, vous pouvez encapsuler la requête d'origine dans une sous-requête. Cela crée une nouvelle portée dans laquelle l'alias de colonne peut être utilisé en dehors de la sous-requête.

Voici comment modifier la requête pour utiliser les alias de colonnes avg_time et cnt dans l'expression ROUND(avg_time * cnt, 2) :

<code class="language-sql">SELECT stddev_time, max_time, avg_time, min_time, cnt, 
       ROUND(avg_time * cnt, 2) as slowdown
FROM (
        SELECT 
            COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, 
            MAX(time) as max_time, 
            ROUND(AVG(time), 2) as avg_time, 
            MIN(time) as min_time, 
            COUNT(path) as cnt, 
            path
        FROM 
            loadtime
        GROUP BY
            path
        ORDER BY
            avg_time DESC
        LIMIT 10
   ) X;</code>
Copier après la connexion

En encapsulant la requête dans une sous-requête, l'alias peut être utilisé dans une instruction SELECT externe, vous permettant d'évaluer avec succès l'expression ROUND(avg_time * cnt, 2).

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal