Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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:从一个表更新另一个表中的id值_Mysql_Sql_Join_Sql Update_Crud - Fatal编程技术网

MySQL:从一个表更新另一个表中的id值

MySQL:从一个表更新另一个表中的id值,mysql,sql,join,sql-update,crud,Mysql,Sql,Join,Sql Update,Crud,我有一个表table1o\u id作为PK,ipaddress,b\u id o_id ip b_id 9205 10.10.10.10 null 9206 10.10.10.11 null 9207 10.10.10.12 null id ip o_id 18356 10.10.10.10 null 18357 10.10.10.11 null 18358

我有一个表
table1
o\u id
作为
PK
ipaddress
b\u id

o_id    ip              b_id
9205    10.10.10.10     null
9206    10.10.10.11     null
9207    10.10.10.12     null
id      ip              o_id
18356   10.10.10.10     null
18357   10.10.10.11     null
18358   10.10.10.12     null
---1000多行

我有另一个表
table2
id
作为
PK
ipaddress
b\u id

o_id    ip              b_id
9205    10.10.10.10     null
9206    10.10.10.11     null
9207    10.10.10.12     null
id      ip              o_id
18356   10.10.10.10     null
18357   10.10.10.11     null
18358   10.10.10.12     null
---1000多行

现在,如果
ipaddress
在两个表中都匹配,那么我想更新这两个表,使
table2.o\u id=table1.o\u id
table1.b\u id=table2.id

update table1  
set b_id = table2.id
where ip = table2.ip

这里我想从第一个表中的
o_id
更新第二个表中的
o_id
。 我还想从第二个表中的
id
更新第一个表中的
b_id

上述问题正确吗?有办法在一次查询中同时更新两个表吗?

查看您的请求 您可以将update与join一起使用

update table1 t1
inner join table2 t2 on t1.ip = t2.ip 
set t1.o_id = t2.o_id, 
    t1.b_id = t2-id
但是查看您的数据,您的table2.o_id=null,因此随着更新,您将所有o_id(主键)设为null。。这是不可能的(对我来说毫无意义)

若需要从第二个表中的id更新第一个表中的b_id,则应

update table2 t2
inner join table1 t1 on t1.ip = t2.ip 
set t2.o_id = t1.o_id, 
    t2.id = t1.b_id

你根本不需要更新!首先要能够基于IP地址字段正确(并且有意义地)更新ref ID,该字段要求IP地址在两个表中都是唯一的。所以,如果它是唯一的,您可以使用它来连接表,并从每个表中获取ID。因此,当您只需连接表即可获得数据时,无需存储数据。

我可以问您为什么要在两个表中有相同的数据之后进行此类更新吗?您是在问如何在更新中进行连接吗?我在这里发布了一个示例:这里我想从第一个表中的
o\u id
更新第二个表中的
o\u id
。我还想从第二个表中的
id
更新第一个表中的
b_id
。我也更新了我的问题。你能帮忙吗?