Het probleem is dat je select
. niet kunt mixen en set
in één verklaring zal er zeker een syntaxisfout zijn:
select*from t where 1 and [email protected]=1;
Als je set
. wilt doen binnen select
, gebruik de dubbele punt is gelijk aan
syntaxis. Wijzig dit:
select*from t where 1 and [email protected]=1;
in:
select*,@a:=1 from t where 1;
Zo werkt u de variabele bij elke . bij rij:
create table t(id int); insert t values(1),(2),(3);
[email protected]=0;
[email protected]:=id from t;
En je kunt zelfs concat
. doen :
[email protected]='0';
select @a:=concat(@a,',',id)from t;
Of concat
zonder de leidende 0
:
[email protected]='';
select @a:=concat(@a,if(@a='','',','),id)from t;
Echter, de handleiding expliciet stelt dat dit gevaarlijk is:
Dit is ook genoemd op Xaprb .
Ten slotte, als je eigenzinnig . doet dingen zoals het toewijzen van verschillende waardetypes aan de variabele en etc, afrekenen de handleiding om er zeker van te zijn dat u de ingewikkelde mechanismen begrijpt.