Maison > base de données > tutoriel mysql > Comment puis-je utiliser correctement les variables dans une instruction MySQL SELECT ?

Comment puis-je utiliser correctement les variables dans une instruction MySQL SELECT ?

DDD
Libérer: 2024-12-16 14:13:09
original
931 Les gens l'ont consulté

How Can I Correctly Use Variables Within a MySQL SELECT Statement?

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;
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal