Problem polega na tym, że nie można mieszać select i set w jednym oświadczeniu na pewno będzie błąd składni:
select*from t where 1 and example@sqldat.com=1;
Jeśli chcesz zrobić set w ramach select , użyj dwukropka równa się
składnia. Zmień to:
select*from t where 1 and example@sqldat.com=1;
na:
select*,@a:=1 from t where 1;
Oto jak zaktualizować zmienną po każdym wiersz:
create table t(id int); insert t values(1),(2),(3);
example@sqldat.com=0;
example@sqldat.com:=id from t;
Możesz nawet wykonać concat :
example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;
Lub concat bez wiodącego 0 :
example@sqldat.com='';
select @a:=concat(@a,if(@a='','',','),id)from t;
Jednak instrukcja wyraźnie stwierdza, że jest to niebezpieczne:
Wspomniano o tym również na Xaprb .
Na koniec, jeśli robisz dziwaczne rzeczy takie jak przypisywanie różnych typów wartości do zmiennej itp., do kasy instrukcja aby upewnić się, że rozumiesz zawiłe mechanizmy.