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 example@sqldat.com=1;

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

select*from t where 1 and example@sqldat.com=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);
example@sqldat.com=0;
example@sqldat.com:=id from t;

Og du kan endda gøre concat :

example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;

Eller concat uden den indledende 0 :

example@sqldat.com='';
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