Réutiliser efficacement les champs calculés dans les requêtes MySQL SELECT
MySQL permet la réutilisation des champs calculés dans les SELECT
instructions, simplifiant les requêtes complexes et réduisant la redondance. Cependant, le référencement direct d'un champ calculé dans la même liste SELECT
n'est pas directement pris en charge. Illustrons cela avec un exemple :
La requête suivante tente de réutiliser le total_sale
calcul :
<code class="language-sql">SELECT s.f1 + s.f2 as total_sale, s.f1 / total_sale as f1_percent FROM sales s;</code>
Cela entraînera une erreur car total_sale
n'est pas reconnu comme colonne au moment où f1_percent
est calculé.
La solution : variables définies par l'utilisateur
Pour surmonter cette limitation, nous pouvons exploiter les variables définies par l'utilisateur de MySQL :
<code class="language-sql">SELECT @total_sale := s.f1 + s.f2 as total_sale, s.f1 / @total_sale as f1_percent FROM sales s;</code>
Ici, nous attribuons le résultat de s.f1 s.f2
à la variable utilisateur @total_sale
. Cette variable est ensuite disponible pour être utilisée dans le calcul ultérieur de f1_percent
.
Considérations importantes :
La documentation MySQL met en garde contre le fait de se fier à l'ordre d'évaluation lors de l'attribution et de la lecture de variables utilisateur dans la même instruction. Le comportement peut être imprévisible. Pour obtenir des résultats fiables, en particulier dans les requêtes complexes, envisagez des approches alternatives telles que les sous-requêtes ou les expressions de table communes (CTE) qui offrent une meilleure clarté et prévisibilité. Pour plus de détails, consultez la documentation officielle MySQL sur les variables utilisateur.
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!