如何从今天开始计算,每7天选择一个,最近的NID
,从UID
开始计算。按多列和时间跨度对MYSQL结果进行分组
如果今天是7月11日见下表
+-----+------------+-----+
| NID | timestamp | UID |
+-----+------------+-----+
| 1 | 1341719851 | 8 | //July 7
| 2 | 1341115051 | 8 | //July 1
| 3 | 1341547051 | 8 | //July 6
| 4 | 1341719851 | 8 | //July 8
| 5 | 1341979051 | 8 | //July 11
| 6 | 1341806251 | 9 | //July 9
| 7 | 1341460651 | 9 | //July 5
| 8 | 1341892651 | 9 | //July 10
+-----+------------+-----+
将输出这样的:
+-----+------------+-----+
| NID | timestamp | UID |
+-----+------------+-----+
| 2 | 1341115051 | 8 | //July 1
| 5 | 1341979051 | 8 | //July 11
| 8 | 1341892651 | 9 | //July 10
+-----+------------+-----+
在过去7天,最近NID
为每个用户是'5'
和'8'
,在前7天,最近的NID
是'2'
,依此类推......
我假设, Group By将会诀窍;但我不知道从哪里开始。
UPDATE
这是工作的查询的基础上,最多的回答:
SELECT nid, timestamp, uid, weeks_ago
FROM (
SELECT nid, timestamp, uid, FLOOR(
(UNIX_TIMESTAMP()- timestamp)/604800
) weeks_ago
FROM `table`
ORDER BY timestamp DESC
) x
GROUP BY uid, weeks_ago
'timestamp'列是MySQL'TIMESTAMP'数据类型吗? 这是*滚动* 7天或7天=一周?你想要所有的结果还是仅仅在前7天? – 2012-07-12 04:32:44
这是一个Unix时间戳......我不知道我是否理解你的权利。这是滚动7天,即从今天0-7天,从今天起8-14天,15-21 ...我需要所有结果,而不仅仅是前7天。 – timofey 2012-07-12 04:54:12