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

Posted

技术标签:

【中文标题】MySQL:从另一个表更新一个表中的 id 值【英文标题】:MySQL: Updating id value in one table from another table 【发布时间】:2018-06-11 08:59:26 【问题描述】:

我有一张桌子table1o_idPK,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_idtable1.b_id = table2.id

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

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

上面的查询正确吗?有没有办法在单个查询中更新两个表?

【问题讨论】:

我能问一下为什么你想要这样的更新之后你将在 2 个表中拥有相同的数据吗? 您是在问如何在 UPDATE 中进行 JOIN?我在这里发布了一个示例:***.com/questions/2114534/… 【参考方案1】:

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

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

【讨论】:

这里我想从第一个表中的o_id 更新第二个表中的o_id。我还想从第二个表中的id 更新第一个表中的b_id。我也更新了我的问题。你能帮忙吗?【参考方案2】:

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

【讨论】:

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

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

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

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

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

从另一个表数据更新表中的多个列,包括空值

mysql 从另一个表更新表