質問: 4) >=1 then count else count + values(count) end; これをエラーになったような文に変えて1文にまとめたいのですが、無理でしょうか? あとそもそもこれをまとめたほうが速いと思ってそうしたいのですが、 変わらないのなら1文1文;でつなげて書くやり方でいこうと思っています。 まとめると速くなることはあるでしょうか?
回答: バルク処理でupdateまでやってしまうとなると一度テンポラリテーブルを 作った方がよいかも //元データ create table tbl1(id int not null unique key,string varchar(10),count int); insert into tbl1 values(1,'aaa',0),(2,'bbb',3),(3,'ccc',1); create table tbl2(id2 int not null unique key,string2 varchar(10),count2 int); insert into tbl2 values(1,'aaa',0),(2,'bbb',2),(3,'ccc',1); //処理 create temporary table tmp(id3 int,string3 varchar(10),count3 int); insert into tmp values (1,'aaa',3),(2,'bbb',3),(3,'ccc',3),(4,'ddd',3); insert into tbl1 select id3,string3,count3 from tmp left join tbl2 on id3=id2 where count2 is null or count2<1 on duplicate key update count=count3; //テンポラリを使わない場合はunionでデータを羅列? insert into tbl1 select id3,string3,count3 from (select 1 as id3,'aaa' as string3,3 as count3 union select 2,'bbb',3 union select 3,'ccc',3 union select 4,'ddd',3) as list left join tbl2 on id3=id2 where count2 is null or count2<1 on duplicate key update count=count3;