选择每个分组的前几条数据
有一个日志表(sys_log) 有时间(log_time)和类型(log_type)字段,其他字段忽略
我想选出 每种类型的前3条数据
不知道有什么好的SQL写法没有 (Oracle数据库)
下面是我的写法,SQL嵌套的比较多:
1.先排序生成按 log_type,log_time 排序的结果集
2.让结果集生成行号
3.选择每种类型的最小行号
4.选择每种类型行号在最小行号和最小行号+2之间的记录
select t.*
from (select t.*, rownum rn
from (select sys_log.*
from sys_log
order by log_type, log_time desc) t) t,
(select min(rn) rn, log_type
from (select t.*, rownum rn
from (select sys_log.*
from sys_log
order by log_type, log_time desc) t)
group by log_type) t2
where t.log_type = t2.log_type
and t.rn between t2.rn and t2.rn + 2;
我想选出 每种类型的前3条数据
不知道有什么好的SQL写法没有 (Oracle数据库)
下面是我的写法,SQL嵌套的比较多:
1.先排序生成按 log_type,log_time 排序的结果集
2.让结果集生成行号
3.选择每种类型的最小行号
4.选择每种类型行号在最小行号和最小行号+2之间的记录
select t.*
from (select t.*, rownum rn
from (select sys_log.*
from sys_log
order by log_type, log_time desc) t) t,
(select min(rn) rn, log_type
from (select t.*, rownum rn
from (select sys_log.*
from sys_log
order by log_type, log_time desc) t)
group by log_type) t2
where t.log_type = t2.log_type
and t.rn between t2.rn and t2.rn + 2;
...全文
相关推荐
mysql分组取每组前几条记录(排名) 附group by与order by的研究
mysql分组取每组前几条记录(排名) 附group by与order by的研究,需要的朋友可以参考下
MySql实现分组取n条最大记录.txt
MySql实现分组取n条最大记录,还在为分组取最大困扰么?
MySQL单表查询操作实例详解【语法、约束、分组、聚合、过滤、排序等】
本文实例讲述了MySQL单表查询操作。分享给大家供大家参考,具体如下: 语法 一、单表查询的语法 SELECT 字段1,字段2… FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二、关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where group by having select disti
查询前几条记录
NULL 博文链接:https://tanghaidi.iteye.com/blog/487512
mysql使用GROUP BY分组实现取前N条记录的方法
主要介绍了mysql使用GROUP BY分组实现取前N条记录的方法,结合实例形式较为详细的分析了mysql中GROUP BY分组的相关使用技巧,需要的朋友可以参考下


