概要
前提: 现在有个历史表,只要用户看一遍视频,我就新增一条记录,包括用户号、课程号、课程的章节号、时间。
需求: 取出来历史里每个课程的最新一条,然后按照时间降序排列。
效果:
第一步
取出某用户最新的历史
SELECT class_id, MAX( create_time ) create_time
FROM class_history
WHERE user_id = '10000'
GROUP BY class_id
效果:
第二步
上表与历史表联查,增加其他属性
SELECT
h.history_id,
h.user_id,
h.class_id,
h.chapter_id,
h.create_time
FROM
class_history h,
( SELECT class_id, MAX( create_time ) create_time FROM class_history WHERE user_id = '10000' GROUP BY class_id ) t1
WHERE
h.create_time = t1.create_time
AND h.class_id = t1.class_id
ORDER BY
h.create_time DESC
效果:
第三步
查询条件加入class表,展示完整的课程详情
SELECT
h.history_id,
h.user_id,
h.class_id,
h.chapter_id,
c.class_name,
c.pic,
c.`level`,
h.create_time
FROM
class_history h,
( SELECT class_id, MAX( create_time ) create_time FROM class_history WHERE user_id = '10000' GROUP BY class_id ) t1,
class c
WHERE
h.create_time = t1.create_time
AND h.class_id = t1.class_id
AND h.class_id = c.class_id
ORDER BY
h.create_time DESC
效果: