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!