簡體   English   中英

如何通過單個mysql查詢更新多個表?

[英]How to update multiple tables by single mysql query?

我有兩個表tb1和tb2我必須更新兩個表的公共列,即user_level我對兩個表(如用戶名)都有一個公共條件。

所以我想這樣更新:

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

但是它不起作用。 什么是正確的mysql查詢呢?

您的問題已解決,請按照我所做的操作進行操作-

創建表tb1(user_level int); 創建表tb2(user_level int,用戶名varchar(20));

插入tb1 values(2); 插入tb2 values(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' ;

嘗試這個:

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" 

我在MSAccess和SQL SERVER 2008上測試了代碼

嘗試這個:

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

正確的查詢是,如果您也要跨數據庫更新,則必須在兩個表中甚至在數據庫中指定要嘗試更新的完整表和行/列。

典型示例:

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

我們可以像這樣不加入就更新

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

我們可以像這樣用join更新它

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM