【问题标题】:How to update a column with column data from an unrelated table - MySQL如何使用不相关表中的列数据更新列 - 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 中的列?

标签: mysql sql


【解决方案1】:

对于一个新的 NewTable 就这样做

insert into NewTable (id)
select id from OldTable

【讨论】:

  • 必须是更新声明。试图保留 NewTable 中其他列的数据。
猜你喜欢
  • 2020-12-11
  • 1970-01-01
  • 2012-05-19
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
相关资源
最近更新 更多