如何通过单个mysql查询更新多个表?

时间:2013-11-26 04:13:03

标签: mysql database

我有两张桌子tb1& TB2 我必须更新两个表的公共列,即user_level 我有两个表的共同标准,如用户名。

所以我想像这样更新:

UPDATE tb1, tb2 SET user_level=1 WHERE username="Mr.X"

但不知怎的,它不起作用。 什么是正确的mysql查询?

5 个答案:

答案 0 :(得分:4)

你的问题已经解决了,请按照我的所作所为 -

create table tb1(user_level int); create table tb2(user_level int,username varchar(20));

插入tb1值(2); 插入tb2值(2,'Mr.X');

我有两个这样的表,其中user_level是常见的,现在根据你我尝试使用一个查询更新两个表中的user_level列,对两个表的公共条件即用户名。

我尝试在两个表中使用单个查询将用户名为'Mr.X'的表中的user_level列的值从2更新为3,所以我尝试了以下查询,它完美地工作了..

          update tb1 inner join tb2

          on tb1.user_level=tb2.user_level 

              set tb1.user_level=3,

                  tb2.user_level=3

             where tb2.username='Mr.X' ;

答案 1 :(得分:4)

试试这个:

UPDATE table_1 tb1, 
       table_2 tb2, 
       table_3 tb3 
SET    tb1.field2 = "some value", 
       tb2.field3 = "some other value", 
       tb3.field4 = "some another value" 
WHERE  tb1.field1 = tb2.field1 
       AND tb1.field1 = tb3.field1 
       AND tb1.field1 = "value" 

我测试了MS Access和SQL SERVER 2008上的代码

答案 2 :(得分:3)

试试这个:

update db1 inner join db2 on db1.username = db2.username 
   set db1.user_level = 1,
       db2.user_level = 1
  where db1.username = 'a';

在这里查看小提琴:http://sqlfiddle.com/#!2/ba34ac/1

答案 3 :(得分:1)

正确的查询是,如果要跨数据库进行更新,则必须在两个表中确定要更新的完整表和行/列,实际上是数据库。

典型示例:

UPDATE tb1, tb2 SET tb1.username = '$username', tb2.location ='New York'WHERE tb1.userid = '$id' AND tb2.logid = '$logid'

答案 4 :(得分:0)

我们可以在没有像这样的连接的情况下更新它

UPDATE table1 T1, table2 T2 
SET T1.status = 1 ,T2.status = 1 
WHERE T1.id = T2.tab1_id and T1.id = 1

我们可以像这样加入

来更新它
UPDATE table1 
INNER join table2 on table1.id=table2.tab1_id 
SET table1.status=3,table2.status=3
WHERE table1.id=1