mysql插入,在更改数据时从其他表中选择

时间:2014-02-21 22:23:07

标签: mysql select insert

我想将我的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?

2 个答案:

答案 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)