如何使用不相关表中的列数据更新列 - 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 值