Il problema è che non puoi combinare select
e set
in una dichiarazione, ci sarà sicuramente un errore di sintassi:
select*from t where 1 and [email protected]=1;
Se vuoi fare set
all'interno di select
, usa i due punti corrispondono a
sintassi. Cambia questo:
select*from t where 1 and [email protected]=1;
in:
select*,@a:=1 from t where 1;
Ecco come aggiornare la variabile su ciascuna riga:
create table t(id int); insert t values(1),(2),(3);
[email protected]=0;
[email protected]:=id from t;
E puoi anche fare concat
:
[email protected]='0';
select @a:=concat(@a,',',id)from t;
Oppure concat
senza il 0
iniziale :
[email protected]='';
select @a:=concat(@a,if(@a='','',','),id)from t;
Tuttavia, il manuale esplicitamente afferma che questo è pericoloso:
Questo è stato anche menzionato su Xaprb .
Infine, se stai facendo eccentrico cose come assegnare diversi tipi di valore alla variabile e così via, checkout il manuale per essere sicuro di aver compreso gli intricati meccanismi.