2014-02-21 57 views
2

我想将我的mysql记录压缩到一个新表中。 我现在的表看起来像这样: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) 

如何更改上面的查询,这样的时间由1000对于第一分插入并在ON DUPLICATE KEY UPDATE部分?

回答

0

在对重复密钥更新,我们不应该除以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) 
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) 
相关问题