Masalahnya adalah Anda tidak dapat mencampur select dan set dalam satu pernyataan, pasti akan ada kesalahan sintaks:
select*from t where 1 and example@sqldat.com=1;
Jika Anda ingin melakukan set dalam select , gunakan titik dua sama dengan
sintaksis. Ubah ini:
select*from t where 1 and example@sqldat.com=1;
menjadi:
select*,@a:=1 from t where 1;
Inilah cara Anda memperbarui variabel pada setiap baris:
create table t(id int); insert t values(1),(2),(3);
example@sqldat.com=0;
example@sqldat.com:=id from t;
Dan Anda bahkan dapat melakukan concat :
example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;
Atau concat tanpa 0 leading di depan :
example@sqldat.com='';
select @a:=concat(@a,if(@a='','',','),id)from t;
Namun, manual secara eksplisit menyatakan bahwa ini berbahaya:
Ini juga telah disebutkan di Xaprb .
Terakhir, jika Anda melakukan aneh hal-hal seperti menetapkan jenis nilai yang berbeda ke variabel dan lain-lain, checkout panduan untuk memastikan Anda memahami mekanisme yang rumit.