Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement les variables dans une instruction MySQL SELECT ?
Utilisation de variables dans les instructions SELECT
Lorsque vous travaillez avec MySQL, vous pouvez rencontrer des scénarios dans lesquels vous souhaitez définir et utiliser des variables dans le même SELECT déclaration. Cependant, il est important d'être conscient des limitations impliquées.
Affectation des variables et lisibilité
Selon la documentation MySQL, il n'est généralement pas recommandé d'attribuer une valeur à un variable utilisateur et lisez-la dans la même instruction. L'ordre d'évaluation des expressions impliquant des variables utilisateur n'est pas défini et peut varier en fonction des éléments de l'instruction.
Cela signifie que la requête suivante peut ne pas se comporter comme prévu :
SELECT @z:=SUM(item), 2*@z FROM TableA;
Dans ce cas , vous obtiendrez probablement NULL pour la deuxième colonne.
Pourquoi la différence avec les procédures ?
Vous On peut se demander pourquoi la requête suivante, qui utilise une procédure stockée au lieu d'une variable utilisateur, fonctionne comme prévu :
SELECT @z:=someProcedure(item), 2*@z FROM TableA;
La raison en est que les procédures stockées sont évaluées différemment des variables utilisateur. L'ordre d'évaluation des procédures stockées est défini et cohérent.
Utilisation d'une sous-requête
Pour obtenir la fonctionnalité souhaitée, vous pouvez utiliser une sous-requête :
select @z, @z*2 from (SELECT @z:=sum(item) FROM TableA ) t;
Cette approche utilise une sous-requête pour initialiser la variable utilisateur (@z), puis la référence dans la requête principale.
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!