如何在mysql中一起使用select update和insert查询

时间:2013-10-30 06:52:40

标签: mysql

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

我想要做的是如果在table2中找到table1记录然后在table3中插入并更新table1中的标志。

我怎样才能使用MySQL。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

你的a无法在一个表中插入并在单个sql语句中更新另一个表。 但你至少有两个选择:

  1. 使用事务(包括插入到table3和更新table1)
  2. 在insert(updat table
  3. )上使用table3上的触发器