Réutiliser les champs calculés dans les requêtes MySQL SELECT
Lorsque vous traitez des requêtes SQL volumineuses et complexes, il est très avantageux de réutiliser les champs calculés pour éviter la duplication et améliorer la lisibilité. Dans MySQL, vous pouvez utiliser des variables utilisateur à cet effet.
Considérons l'exemple suivant :
<code class="language-sql">SELECT s.f1 + s.f2 as total_sale, s.f1 / total_sale as f1_percent FROM sales s</code>
Cette requête tente de réutiliser le champ calculé total_sale dans l'expression f1_percent. Cependant, MySQL renverra une erreur "colonne inconnue" car total_sale n'est pas défini comme colonne dans la table des ventes.
Pour résoudre ce problème, nous pouvons utiliser l'opérateur := pour attribuer la valeur calculée à la variable utilisateur :
<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>
En ajoutant @ devant le nom de la variable, nous créons une variable utilisateur qui pourra être référencée ultérieurement dans la requête. Dans cet exemple, nous attribuons les valeurs de s.f1 s.f2 à la variable @total_sale. Nous pouvons ensuite utiliser cette variable dans des expressions ultérieures telles que s.f1/@total_sale pour calculer f1_percent.
Il est important de noter que bien que cette méthode nous permette de réutiliser les champs calculés, elle comporte également quelques mises en garde. Selon la documentation MySQL, l'attribution et la lecture de la valeur d'une variable utilisateur dans la même instruction constituent un comportement indéfini et peuvent produire des résultats inattendus. Il est donc recommandé d’utiliser cette technique avec prudence et uniquement lorsque cela est nécessaire.
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!