Mysql
 sql >> Base de données >  >> RDS >> Mysql

SET une variable dans l'instruction SELECT - MySQL

Le problème est que vous ne pouvez pas mélanger select et set dans une instruction, il y aura sûrement une erreur de syntaxe :

select*from t where 1 and [email protected]=1;

Si vous voulez faire set dans select , utilisez les deux-points sont égaux syntaxe. Modifiez ceci :

select*from t where 1 and [email protected]=1;

dans :

select*,@a:=1 from t where 1;

Voici comment vous mettez à jour la variable sur chaque ligne :

create table t(id int); insert t values(1),(2),(3);
[email protected]=0;
[email protected]:=id from t;

Et vous pouvez même faire concat :

[email protected]='0';
select @a:=concat(@a,',',id)from t;

Ou concat sans le 0 de tête :

[email protected]='';
select @a:=concat(@a,if(@a='','',','),id)from t;

Cependant, le manuel explicitement déclare que c'est dangereux :

Cela a également été mentionné sur Xaprb .

Enfin, si vous faites de l'excentrique des choses comme l'attribution de différents types de valeurs à la variable et etc, checkout le manuel pour être sûr que vous comprenez les mécanismes complexes.