-1

我有三个表,如 table1、table2 和 table3。

我想要做的是,如果在 table2 中找到 table1 记录,然后在 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 语句中插入一个表并更新另一个表。但你至少有两个选择:

  1. 使用事务(包括插入表 3 和更新表 1)
  2. 在插入时使用 table3 上的触发器(更新表
于 2013-10-30T07:13:38.007 回答