Mysql
 sql >> Database >  >> RDS >> Mysql

SET una variabile nell'istruzione SELECT - MySQL

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.