0

我的 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 语句并使用多个 LEFT JOIN,但还没有到达那里。

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

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

4

2 回答 2

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"
于 2012-05-02T09:26:11.253 回答
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
于 2012-05-02T09:26:32.170 回答