我的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)。
答案 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