如何從今天開始計算,每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