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
。我也更新了我的问题。你能帮忙吗?