問題は、selectを混在させることができないことです およびset 1つのステートメントで、構文エラーが発生することは間違いありません:
select*from t where 1 and example@sqldat.com=1;
setを実行したい場合 select内 、コロンが等しい
を使用します 構文。これを変更します:
select*from t where 1 and example@sqldat.com=1;
に:
select*,@a:=1 from t where 1;
それぞれに変数を更新する方法は次のとおりです。 行:
create table t(id int); insert t values(1),(2),(3);
example@sqldat.com=0;
example@sqldat.com:=id from t;
また、concatを実行することもできます :
example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;
またはconcat 先頭の0なし :
example@sqldat.com='';
select @a:=concat(@a,if(@a='','',','),id)from t;
ただし、マニュアルは明示的に これは危険であると述べています:
これについても言及されています
最後に、風変わりなをしている場合 変数に異なる値型を割り当てるなど、チェックアウトマニュアル 複雑なメカニズムを確実に理解するために。