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

标签 mysql sql sql-order-by

我使用下表跟踪模块内的页面浏览量:

id | page_id | user_id | session_id | created

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

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

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

最佳答案

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

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

关于MySQL查询排序数据的两种方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835276/

相关文章:

MySQL - SELECT ...(子查询)AS 字段名

python - 在 Python 中使用占位符时出现 MySQL 语法错误

java - 从 JTable 获取数据到 jText 字段,但出现空指针异常

sql - 查询是否太大?

sql - 为什么人们在 SQL 中使用 ASC?

mysql - 基于group by order by数据更新记录

MySQL 查询和连接

sql - PostgreSQL 如何删除重复值

mysql - 带有连接的棘手 MySQL 查询?

mysql - 通过MySQL查询列出记录