SELECT每天最多一个值(存储在unix时间戳中)

时间:2012-10-09 21:19:56

标签: mysql

我有一个MySQL表,每个用户和每天都有不同的值,但创建的是带有unix时间戳的INT:

id INT, AUTO_INCREMENT
users_id INT
value INT
created INT

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

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

2 个答案:

答案 0 :(得分:3)

使用此

  

SELECT * FROM table GROUP BY DAY(FROM_UNIXTIME(created))

答案 1 :(得分:2)

类似的东西(广泛烧毁,但是):不要仅按天分组,在过去30天内,你可能在同一天有两次(2月......)

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