sql >> Databasteknik >  >> RDS >> Mysql

SET en variabel i SELECT-satsen - MySQL

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.



  1. MySQL PI() Funktion – Returnera värdet av π (pi)

  2. Beräkna antalet poster för varje datum mellan 2 datum

  3. Lägg till en kolumn som representerar en sammanlänkning av två andra Varchar-kolumner

  4. Skapa en procedur i mySql med parametrar