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.