環境はMySQL8.0.21です。
以下のように、if文内で、2つの代入式を実行させたいのですが、エラーとなります。
@y:=@y+1; @x:=1
区切りのセミコロンをandにしたり全体をカッコにいれてみたりしましたが、うまくいきません。
全体の作業としては既存のplaceテーブルがあり、そのzカラムの値が直前のレコードから変化している場合は、
@y:=@y+1; @x:=1
を実行、そうではない場合は以下を実行します。
@x:=@x+1
記載していませんが、ここで得られたSELECT文をもとに新テーブルを作成しようと思っています。
以下SQL文です。
sql
1set @x:=0; 2set @y:=1; 3set @z:=null; 4 5select 6 if(@z!=place.z, (@y:=@y+1; @x:=1), @x:=@x+1), 7 @x, 8 @y, 9 @z:=place.z 10from place;
よろしくお願いいたします。
どういうデータに対してどういう結果を得たいのでしょうか。
あとMySQLも5系と8では機能的に違ってきます。バージョンをマイナーバージョン含めて提示してください
すみません、質問文を修正しました。
バージョンは8.0.21でした。よろしくお願いいたします。
placeテーブルのテーブル定義とサンプルデータ(CREATE TABLE,INSERT)も提示された方がよいかと思います。こちらで検証できませんので。
上手くいかないとは、どのような結果になるのでしょうか?
エラーにはならないのですか?
→タイトルにエラーが出るってありますね。;で複数の実行できないというエラーだと思います。
そもそもifやcaseは結果を返すもので、代入式などを含め、複数を実行できるものでは無いと思いますが。
ありがとうございます。上にありますように
@y:=@y+1; @x:=1 のように、複数の代入式だとシンタックスエラーがでますが、
@y:=@y+1だけとすると問題なく動くのです。
今回は回答いただき解決してしまいましたが、次回から再現可能な形で質問を行います。ありがとうございました。
回答1件
あなたの回答
tips
プレビュー