table1、table2、table3 のような 3 つのテーブルがあります。
私がやりたいことは、table1 レコードが table2 にある場合、table3 に挿入し、table1 のフラグを更新することです。
MySQLを使用してそれを行うにはどうすればよいですか。
table1、table2、table3 のような 3 つのテーブルがあります。
私がやりたいことは、table1 レコードが table2 にある場合、table3 に挿入し、table1 のフラグを更新することです。
MySQLを使用してそれを行うにはどうすればよいですか。
単一のクエリではありませんが、ストアド プロシージャを使用するとタスクを達成できます
プロシージャを作成します (table2 にforeign_key があると仮定します)
delimiter //
create procedure my_proc()
begin
select @a := (select GROUP_CONCAT(t1.id) from table1 t1 left outer join table2 t2 on t1.id != t2.foreign_key);
insert into table3 select * from table1 where FIND_IN_SET(id,@a);
update table1 set flag=1 where FIND_IN_SET(id,@a);
end//
そして、それを呼び出します
delimiter ;
call my_proc();
あるテーブルに挿入して別のテーブルを単一のSQLステートメントで更新することはできません。ただし、少なくとも 2 つのオプションがあります。