sql >> Base de Datos >  >> RDS >> Mysql

ESTABLECER una variable en la declaración SELECT - MySQL

El problema es que no puedes mezclar select y set en una declaración, seguramente habrá un error de sintaxis:

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

Si quieres hacer set dentro de select , use los dos puntos son iguales sintaxis. Cambia esto:

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

en:

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

Así es como se actualiza la variable sobre cada fila:

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

E incluso puedes hacer concat :

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

O concat sin el 0 inicial :

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

Sin embargo, el manual explícitamente establece que esto es peligroso:

Esto también se ha mencionado en Xaprb .

Por último, si estás haciendo peculiar cosas como asignar diferentes tipos de valores a la variable y etc., checkout el manual para asegurarse de que comprende los intrincados mecanismos.