【问题标题】:Insert Data from Table A to Table B WHERE (conditions) & SET Col.a = "xxx"将数据从表 A 插入表 B WHERE(条件)& SET Col.a = "xxx"
【发布时间】:2015-08-05 10:30:50
【问题描述】:
| Table [A]                          | Table [B]   
----------------------               ---------------------
|                                    |
| id    value   data                 | id    value   data
| ab     15      100                 | ac     19      200
| ab     18      101                 | ac     28      310
| ab     22      199                 | ac     39      401

表 A 是我的旧数据库表,其中包含历史数据。 表 B 是我当前的数据库表,在 id 中具有更正值

我想将表 A 中的历史数据插入表 B WHERE value=xxxx 并同时在插入表 B 时设置 tablea.id = ac 中的数据,以便数据结果会是。

| Table [A]                          | Table [B]   
--------------------                 ----------------------
|                                    |
| id    value   data                 | id    value   data
| ab     15      100                 | ac     19      200
| ab     18      101                 | ac     28      310
| ab     22      199                 | ac     39      401
|                                    | ac     15      100
|                                    | ac     18      101
|                                    | ac     22      199

我将使用 INSERT IGNORE 因为我的表有 3 列,因为它是复合主键。表描述只是一个示例。我的表格有更多的列,只是突出了我想要完成的数据导入的主要区别。

【问题讨论】:

  • id 是否总是ac?我猜表 [b] 中的第 6 列,值应该是 18 而不是 28
  • 对于当前的导入,是的,值将是 ac。
  • 那么就可以使用下面的戈登解决方案了

标签: mysql sql database insert insert-into


【解决方案1】:

这是你想要的吗?

insert into tableb (id, value, data)
    select 'ac', value, data
    from tablea
    where id = 'ab';

这会插入值并将id'ab' 更改为'ac'

【讨论】:

  • 我试过但收到错误代码:1054。'字段列表'中的未知列'id'pastebin.com/PwTxc9Ga
  • @Royston 。 . .您问题中的示例数据在两个表中都有名为 id 的列。我不知道为什么它会是未定义的。
  • 谢谢戈登!当我直接从 MySQL Workbench 复制列时,它不知道为什么列会有该字段“id”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
相关资源
最近更新 更多