2014-02-21 96 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) 
相關問題