-1

table1、table2、table3 のような 3 つのテーブルがあります。

私がやりたいことは、table1 レコードが table2 にある場合、table3 に挿入し、table1 のフラグを更新することです。

MySQLを使用してそれを行うにはどうすればよいですか。

4

2 に答える 2

1

単一のクエリではありませんが、ストアド プロシージャを使用するとタスクを達成できます

プロシージャを作成します (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();
于 2013-10-30T07:54:11.123 に答える
0

あるテーブルに挿入して別のテーブルを単一のSQLステートメントで更新することはできません。ただし、少なくとも 2 つのオプションがあります。

  1. トランザクションを使用する (テーブル 3 への挿入とテーブル 1 の更新を含む)
  2. 挿入時にtable3でトリガーを使用する(テーブルを更新する
于 2013-10-30T07:13:38.007 に答える