Problemet är att du inte kan blanda select
och set
i en sats kommer det säkert att finnas syntaxfel:
select*from t where 1 and [email protected]=1;
Om du vill göra set
inom select
, använd kolonet är lika med
syntax. Ändra detta:
select*from t where 1 and [email protected]=1;
till:
select*,@a:=1 from t where 1;
Så här uppdaterar du variabeln vid varje rad:
create table t(id int); insert t values(1),(2),(3);
[email protected]=0;
[email protected]:=id from t;
Och du kan till och med göra concat
:
[email protected]='0';
select @a:=concat(@a,',',id)from t;
Eller concat
utan den inledande 0
:
[email protected]='';
select @a:=concat(@a,if(@a='','',','),id)from t;
Men manualen uttryckligen anger att detta är farligt:
Detta har också nämnts på Xaprb .
Slutligen, om du gör konstiga saker som att tilldela olika värdetyper till variabeln och etc, checkout manualen för att vara säker på att du förstår de invecklade mekanismerna.