提问者:小点点

Mysql更新/插入:复制历史数据


我的Mysql数据库中有一些历史数据表。

我想在同一张表中为另一天重复一天的历史数据。

表结构,带有一些示例数据:

 Id | Date       | Value

  1 | 2012-04-30 |     5
  2 | 2012-04-30 |    10
  3 | 2012-04-30 |    15

我想重复这些ID和值,但需要一个新的日期-例如2012-05-01。即增加:

  1 | 2012-05-01 |     5
  2 | 2012-05-01 |    10
  3 | 2012-05-01 |    15

我觉得应该有一个直截了当的方法来做这件事...我试过使用UPDATE语句和子查询,并使用多个左联接,但还没有达到目的。

我能怎么做吗?

编辑:以澄清...-我不想将这些添加到新表中-我也不想更改表中的现有记录。-这些ID是有意复制的(它们是另一个表的foreign_key,该表记录了数据引用的内容...)。


共1个答案

匿名用户

INSERT INTO yourTable
SELECT ID, "2012-05-01" As Date, Value
FROM yourTable
WHERE Date = "2012-04-31"

通常,您的ID是一个自动增量,所以在同一个表中使用相同的ID是不起作用的。使用不同的ID或不同的表。

不同的ID(下一次自动递增):

INSERT INTO yourTable
SELECT NULL as ID, "2012-05-01" As Date, Value
FROM yourTable
WHERE Date = "2012-04-31"

不同的表(指原始ID)

INSERT INTO yourTable_hist
SELECT NULL as ID, ID as old_ID, "2012-05-01" As Date, Value
FROM yourTable
WHERE Date = "2012-04-31"