我有一个table1
o_id
表PK
,ipaddress
,b_id
o_id ip b_id
9205 10.10.10.10 null
9206 10.10.10.11 null
9207 10.10.10.12 null
---超过1000行
我有另一张表table2
id
作为PK
,ipaddress
,b_id
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_id = table1.o_id
和table1.b_id = table2.id
update table1
set b_id = table2.id
where ip = table2.ip
在这里,我想要从第一个表格中的o_id
更新第二个表格中的o_id
。
我还想在第二个表中的b_id
更新第一个表中的id
。
以上查询是否正确?有没有办法在单个查询中更新两个表?
答案 0 :(得分:3)
看你的要求 你可以使用更新加入
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(主键)为空...这是不可能的(这对我没有意义)
如果你需要从第二个表中的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
答案 1 :(得分:0)
您根本不需要更新!首先能够根据IP地址字段正确地(并且有意义地)更新ref ID,这将要求IP地址在两个表中都是唯一的。因此,如果它是唯一的,您可以使用它来连接表,并从每个表中获取ID。因此,只需加入表格就无需存储它。