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

cwdobuhd  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(414)

我有一张table
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多行
我还有一张table
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` 在第二张table上 `o_id` 在第一张table上。我也想更新一下 `b_id` 在第一个表中 `id` 在第二张table上。
以上查询是否正确?有没有办法在一个查询中同时更新两个表?
h43kikqp

h43kikqp1#

你的请求也可以用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\u id=null,因此通过更新,您可以使所有的o\u id(主键)为null。。这是不可能的(对我来说毫无意义)
如果您需要从第二个表中的id更新第一个表中的b\u 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
mepcadol

mepcadol2#

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

相关问题