Problém je v tom, že nemůžete kombinovat select a set v jednom příkazu bude jistě chyba syntaxe:
select*from t where 1 and example@sqldat.com=1;
Pokud chcete provést set v rámci select , použijte dvojtečku rovná se
syntax. Změňte toto:
select*from t where 1 and example@sqldat.com=1;
do:
select*,@a:=1 from t where 1;
Zde je návod, jak aktualizovat proměnnou při každém řádek:
create table t(id int); insert t values(1),(2),(3);
example@sqldat.com=0;
example@sqldat.com:=id from t;
A můžete dokonce provést concat :
example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;
Nebo concat bez úvodního 0 :
example@sqldat.com='';
select @a:=concat(@a,if(@a='','',','),id)from t;
Nicméně manuál výslovně uvádí, že je to nebezpečné:
To bylo také zmíněno na Xaprb .
A konečně, pokud děláte zvláštní věci jako přiřazení různých typů hodnot k proměnné atd., pokladna manuál abyste si byli jisti, že rozumíte složitým mechanismům.