【发布时间】:2016-12-11 04:02:49
【问题描述】:
我有一张用户观看历史记录表。每次查看内容时,我都会记录“content_id”、“user_id”并在名为“watch_history”的表中添加一个时间戳。即使连续多次观看相同的内容,也会记录每次点击。
我需要提取观看历史记录,但“content_id”列应与最近观看的内容不同,并按降序排列...我发现很难解释,但基本上就是 YouTube 观看历史记录的工作原理(同一视频没有多个实例)。
这是我目前所拥有的:
SELECT content_id, time_stamp, user_id,
COUNT(DISTINCT content_id) AS hit_count
FROM watch_history
WHERE user_id = X
GROUP BY content_id
ORDER BY time_stamp DESC
它有效,但我需要“time_stamp”字段来反映上次观看该内容的时间,有什么帮助吗?
谢谢。
【问题讨论】:
-
SELECT x, COUNT(DISTINCT x) ... GROUP BY x将始终为计数产生 1。你想要MAX(time_stamp)。 请注意,user_id 很可能不是具有最后一个 time_stamp 值的记录的 user_id。 -
尝试 max(time_stamp) 获取最新的
-
@Uueerdo 。 . .您评论中的
note不正确,因为where子句仅选择一个用户ID。 -
@GordonLinoff 哦,你是对的,我忽略了这一点。
标签: mysql database sorting grouping