0

我有一个 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 时间戳来做。

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

4

2 回答 2

3

用这个

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

于 2012-10-09T21:22:44.710 回答
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))
于 2012-10-09T21:30:13.663 回答