2013-10-30 39 views
-1

我有三个表,如table1,table2和table3。如何在mysql中使用select update和insert查询

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

我怎样才能使用MySQL。

+0

创建事务并做到这一点。这有什么问题吗? – Trying

+0

你想/需要在单个查询中完成所有操作吗? (你的话题似乎暗示) – JScoobyCed

+0

我期待这个使用单个查询。 – vam

回答

0

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

  1. 使用事务(包括插入到表3和更新表1)
  2. 上插入使用上表3触发器(updat表
1

它不是一个单一查询,但使用存储过程,你可以实现任务

创建一个程序(假设你有一个表2 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(); 
+0

humm我期待它使用单个查询,但是好吧,我将与您的解决方案一起去,因为 – vam

+0

对于单个查询是不可能的!另一种选择是交易 – shiva

相关问题