如何通过一个mysql查询更新多个表?
我有两张桌子tb1和tb2 我必须更新两个表的一个公共列,即user\u level 我对这两个表都有一个共同的标准,比如username 所以我想更新如下:如何通过一个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
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。