如何使用不相关表中的列数据更新列 - MySQL

Posted

技术标签:

【中文标题】如何使用不相关表中的列数据更新列 - MySQL【英文标题】:How to update a column with column data from an unrelated table - MySQL 【发布时间】:2018-06-23 14:19:32 【问题描述】:

如何使用不相关表中的列数据更新 mysql 中的列?

没有公共字段,因此无法连接表。

列数据都是唯一的,需要按顺序复制。

试过了:

UPDATE NewTable 
SET NewTableID = (SELECT OldTableID
FROM OldTable);

据我了解,这会尝试将 NewTableID 中的所有值更新为 OldTableID 中的一个值 - 但会失败,因为它返回多个值。

我想按顺序获取 ALL 唯一的 OldTableID 值,并更新 NewTableID 以使其准确反映 OldTableID。 OldTableID 是 AUTO_INCREMENT,如果这有任何改变的话。


编辑 1

这个 Incident 表的 IncidentID 是一个 PK

我想将其更新为犯罪表中的 FK

事件 ID 为 AUTO_INCREMENT

插入导致数据作为新行添加。我从 CSV 导入时无法一次插入所有数据

【问题讨论】:

NewTable 里面有什么?对于一个新表,只需插入 select... 这个有点不清楚。您是否已经在 NewTable 中有数据?如果是这样,您是否尝试更新 NewTableID 并以某种方式重新训练当前 NewTableID 具有的列?你为什么想做这个?对于您要实现的目标,也许有另一种解决方案。 @BobAleena 这完全正确。我已经填充了 NewTable 的其他列。我试图复制引用 PK 的 FK 数据,即 OldTableID。 编辑您的问题并提供示例数据和所需的结果。你想做的不是更新。 这有点令人困惑——所以你想更新每个项目,FK 和 PK 匹配的地方?那应该是直截了当的更新。或者您是否还想更改表格以包含 OldTable 中的列? 【参考方案1】:

对于一个新的 NewTable 就这样做

insert into NewTable (id)
select id from OldTable

【讨论】:

必须是更新声明。试图保留 NewTable 中其他列的数据。

以上是关于如何使用不相关表中的列数据更新列 - MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何自动增加表中的列?

如何使用特定表中的列作为我需要从中删除、插入或更新数据的表名

如何通过比较两个表中的两列来更新表中的列

MySQL - 更新/设置一个表中的列等于另一个表中的 MAX 值

Hibernate hbm2ddl.auto=update 不更新 MySQL 中的列定义

如何使用同一表中的列进行更新(ORACLE)