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 example@sqldat.com=1;

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

select*from t where 1 and example@sqldat.com=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);
example@sqldat.com=0;
example@sqldat.com:=id from t;

Et vous pouvez même faire concat :

example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;

Ou concat sans le 0 de tête :

example@sqldat.com='';
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.