2012-10-09 70 views
0

我已经有每个用户和每天不同的值,但创建一个MySQL表是UNIX时间戳的INT:选择每天最多一个值(存储在UNIX时间戳),

id INT, AUTO_INCREMENT 
users_id INT 
value INT 
created INT 

我需要在过去的30天内每天和每个用户选择最多一个值。如果这是一个MySQL的TIMESTAMP,我会这样做:SELECT * FROM table GROUP BY DAY(created),但我不能用UNIX时间戳做到这一点。

关于如何用当前数据重现相似查询的任何想法?

回答

2

类似的东西(广烧毁,但):不组按天而已,最后30天,你可能有同一天的两倍(二月...)

select 
    users_id, 
    MAX(value) --or just value if you don't mind which should be returned 
FROM table 
WHERE FROM_UNIXTIME(created) BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE() 
GROUP BY users_id, MONTH(FROM_UNIXTIME(created)), DAY(FROM_UNIXTIME(created)) 
3

使用此

SELECT * FROM表GROUP BY DAY(FROM_UNIXTIME(创建))

+0

我猜'GROUP BY MOD(创建,86400)'也可以使用 – Satevis

相关问题