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
Susan Sarandonoriginal
2025-01-14 09:31:42146parcourir

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>

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!

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