Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过一个mysql查询更新多个表?_Mysql_Database - Fatal编程技术网

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

如何通过一个mysql查询更新多个表?,mysql,database,Mysql,Database,我有两张桌子tb1和tb2 我必须更新两个表的一个公共列,即user\u level 我对这两个表都有一个共同的标准,比如username 所以我想更新如下: UPDATE tb1, tb2 SET user_level=1 WHERE username="Mr.X" 但不知何故,它不起作用。 对此,正确的mysql查询是什么?试试以下方法: update db1 inner join db2 on db1.username = db2.username set db1.user_le

我有两张桌子tb1和tb2 我必须更新两个表的一个公共列,即user\u level 我对这两个表都有一个共同的标准,比如username

所以我想更新如下:

UPDATE tb1, tb2 SET user_level=1 WHERE username="Mr.X"
但不知何故,它不起作用。 对此,正确的mysql查询是什么?

试试以下方法:

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

请看这里的小提琴:

您的问题已经解决,请按照我所做的做-

创建表tb1(用户级别int); 创建表tb2(用户级别int,用户名varchar(20))

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

我有两个这样的表,其中user_level是公共的,现在根据您的说法,我尝试使用一个查询来更新两个表中的user_level列,这两个表都有一个公共条件,即username

我尝试使用一个查询将用户名为“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 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
我们可以像这样用join更新它

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

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

典型示例:

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

当你说数据库时,你真的是指数据库还是表?不,我说错了。那些是桌子。我更新了我的问题,它显示:字段列表中的“user\u level”列不明确。我想这样使用:UPDATE tb1,tb2 SET tb1。user\u level=1,tb2。user\u level=1,其中username=“Mr.X”是正确的查询吗?但用户名必须来自tb1或tb2,您可能需要另一个条件。尝试
其中tb1.username=“Mr.X”和tb2.username=“Mr.X”
我不想在这种情况下使用内部连接更新db1,db2 set db1.user_level=1,db2.user_level=1,其中db1.username='a'和db1.username=db2.username;Tin Tran您确定您的代码正常吗?我这样问是因为在实现代码时,一个小错误可能会导致我的站点出现严重的安全问题。如果它是好的和正确的,我认为它是最好的和简化的代码。尝试在将来更好地格式化你的代码。这次我处理好了。另外,请尝试添加一个解释,单独的代码块可能无法帮助将来寻找问题答案的任何人。这非常有效。我倾向于使用AS,例如表1作为tb1,等等。这也适用于MySQL。