Mysql Update / Insert:复制历史数据

时间:2012-05-02 09:22:40

标签: mysql sql-update insert-select sql-insert

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

我想在同一张桌子上重播一天的历史数据。

表结构,包含一些示例数据:

 Id | Date       | Value

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

我想重复那些ids&值,但是对于新的日期 - 例如2012-05-01。即添加:

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

我觉得应该有一种直截了当的方式来做这个......我尝试过使用子查询和使用多个LEFT JOIN的UPDATE语句,但还没有到达那里。

关于我如何做到这一点的任何想法?

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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

也许是这样的:

UPDATE Table1
SET Date=DATE_ADD(Date, INTERVAL 1 DAY)

或者如果您想将它们插入新表:

INSERT INTO Table1
SELECT
  ID,
  DATE_ADD(Date, INTERVAL 1 DAY),
  Value
FROM
  Table2