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

SET en variabel i SELECT-sætning - MySQL

Problemet er, at du ikke kan blande select og set i en sætning vil der helt sikkert være syntaksfejl:

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

Hvis du vil gøre set inden for select , brug kolonet er lig med syntaks. Skift dette:

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

ind i:

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

Sådan opdaterer du variablen ved hver række:

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

Og du kan endda gøre concat :

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

Eller concat uden den indledende 0 :

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

Men manualen eksplicit oplyser, at dette er farligt:​​

Dette er også blevet nævnt på Xaprb .

Til sidst, hvis du laver quirky ting som at tildele forskellige værdityper til variablen osv., checkout manualen for at være sikker på at du forstår de indviklede mekanismer.



  1. hvordan får man env-variabler fra docker i symfony yml-konfigurationsfil

  2. Ruby 'pg' perle, der linker til forkert kopi af libpq.5.dylib (på OSX)

  3. MySql indsætte sætning til binær datatype?

  4. UTF - 8 med JPA og Glassfish 4.0