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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL:从另一个表中更新一个表中的id值相关的知识,希望对你有一定的参考价值。

我有一张桌子table1 o_id作为PKipaddressb_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作为PKipaddressb_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_idtable1.b_id = table2.id

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

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

以上查询是否正确?有没有办法在单个查询中更新两个表?

答案

查看您的请求,您可以使用更新加入

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。因此,只需加入表格即可获得它。

以上是关于MySQL:从另一个表中更新一个表中的id值的主要内容,如果未能解决你的问题,请参考以下文章

从另一个表更新一个表中的值

从另一个表 MySQL 更新地理信息

使用 MSSQL 中的 DYNAMIC SQL 从另一个表更新一个表中的值

Mysql通过ID从另一个表中删除一个表

SQL 从另一个表中的另一列更新一列

从另一个页面获取ID值[重复]