"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi ne puis-je pas utiliser les alias des colonnes directement dans les calculs de la même instruction SELECT?

Pourquoi ne puis-je pas utiliser les alias des colonnes directement dans les calculs de la même instruction SELECT?

Publié le 2025-03-22
Parcourir:377

Why Can't I Use Column Aliases Directly in the Same SELECT Statement's Calculations?

Limitations pour utiliser directement un alias de colonne pour le calcul dans les requêtes SQL

Dans une requête SQL donnée, essayant d'utiliser des alias de colonne avg_time et dans les expressions rond (avg_time * cnt, 2) provoquera l'erreur "colonne" avg_time "n'existe pas".

La cause profonde est l'ordre de calcul de l'instruction

SELECT . Le programme traite l'instruction entière sélectionner en même temps, de sorte que la valeur d'alias ne peut pas être reconnue à ce moment-là.

Solution: utilisez des sous-requêtes imbriquées ]

Pour résoudre ce problème, les sous-questionnaires peuvent être utilisés pour encapsuler la requête, créant ainsi efficacement un ensemble de données intermédiaire. Dans cette sous-requête, vous pouvez créer les alias de colonne requis

avg_time et cnt .

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;
Maintenant, lorsque cette requête est exécutée, la sous-requête est d'abord calculée pour générer un ensemble de données contenant l'alias de colonne souhaitée. Ensuite, l'instruction ultérieure

select peut se référer avec succès à ces alias.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3