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.