我想将我的mysql记录压缩成一个新表。 我目前的表格如下:
time user value
1392901726 jo 12
1392901727 jo 5
1392999728 jo 3032
1392901726 kada 1
1392901727 kada 2
1392999728 kada 123
我想通过将时间除以1000来进行压缩,需要在每个新时间累积值。 上面的例子应该成为:
time user value
1392901 jo 17
1392999 jo 3032
1392901 kada 3
1392999 kada 123
我已经有一个查询从输入表中获取数据并将其存储到新表中。此查询已累积值。我只能将旧时间转换为新时间,以便将多个记录合并到一个记录中:
INSERT INTO userTest (`time`, `user`, `value`)
SELECT *
FROM userStats
WHERE `user` = 'jo'
ON DUPLICATE KEY UPDATE
`time`= VALUES(`time`), `user` = VALUES(`user`), `value` = userTest.value + VALUES(value)
如何更改上述查询,以便第一次插入和ON DUPLICATE KEY UPDATE部分的时间除以1000?
答案 0 :(得分:1)
在ON DUPLICATE KEY UPDATE中,我们不应该将时间除以1000,所以最终的答案应该是:
INSERT INTO userTest (`time`, `user`, `value`)
SELECT time/1000, user, value
FROM userStats
WHERE `user` = 'jo'
ON DUPLICATE KEY UPDATE `time`= VALUES(`time`), `user` = VALUES(`user`), `value` = userTest.value + VALUES(value)
答案 1 :(得分:0)
选择要插入和操作的字段。
INSERT INTO userTest (`time`, `user`, `value`)
SELECT time/1000, user, value
FROM userStats
WHERE `user` = 'jo'
ON DUPLICATE KEY UPDATE `time`= VALUES(`time`/1000), `user` = VALUES(`user`), `value` = userTest.value + VALUES(value)