MySQL查询排序数据有两种方式

时间:2009-05-07 15:16:24

标签: mysql sql sql-order-by

我正在使用下表跟踪模块中的页面视图:

id | page_id | user_id | session_id | created

每个页面对于某个模块都是唯一的;因此,例如,第14页仅存在于模块2中。

我正在尝试编写一个查询,告诉我特定模块的查看会话何时开始(GROUP BY session_id),但我的订购时遇到问题。基本上,对于该分组会话,我想返回最早的“已创建”(查看会话的开始时间)和最新的page_id(它们在模块中的距离)。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

我认为您需要在选择中使用子查询:

SELECT a.session_id, MIN(a.created) as start_time, 
b.page_id AS last_page, b.end_time
FROM table a 
INNER JOIN 
   (SELECT b.session_id, MAX(b.created) as end_time, MAX(b.page_id) 
   FROM table b GROUP BY b.session_id) 
ON a.session_id = b.session_id GROUP BY a.session_id

答案 1 :(得分:2)

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id