sql >> Database >  >> RDS >> Mysql

SET een variabele in de SELECT-instructie - MySQL

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.



  1. Buitenlandse sleutel laten vallen zonder de naam van de beperking te kennen?

  2. Wilt u rijnummer op kolomgroep in MIJN SQL?

  3. IBM Worklight - Hoe de OUT-parameter te krijgen bij het aanroepen van een opgeslagen procedure?

  4. PostgreSQL UITLEG – Wat zijn de querykosten?