请教查询:如何选择不同类别的前几条记录?

rocsoar 2002-11-11 03:56:21
有一个表,里面有大类别id BIGID,小类别id LITTLEID,记录id RECORDID,记录时间 TIME,现在分别想要选择某几个大类的某几个小类的最近的N条记录,请问SQL语句如何写?有优化建议更好。
(注意:表中的记录是散乱的,记录集中,已经有N个大类,每个大类下面有N个小类。)
...全文
50 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingSunSha 2002-11-15
  • 打赏
  • 举报
回复
如果你用的ORACLE 8I以上的版本,那么最好使用ROW_NUMBER() OVER()函数来处理
见下例:
SELECT deptno, ename, hiredate,
ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY hiredate) AS emp_id
FROM emp;
rocsoar 2002-11-11
  • 打赏
  • 举报
回复
好的。谢了。
表结构:
名称 空值? 类型
---------------- -------- ----------------
INFO_ID NOT NULL NUMBER
IT_ID NUMBER
IT_NAME NOT NULL VARCHAR2(20)
IS_ID NUMBER
IS_NAME NOT NULL VARCHAR2(20)
INFO_TYPE CHAR(1)
INFO_TITLE VARCHAR2(200)
INFO_TIME DATE
条件:选择出每个IS_ID下的5条信息,info_time为最新.
  • 打赏
  • 举报
回复
把表结构和条件给我,帮你写!
  • 打赏
  • 举报
回复
在from中嵌套一层select
rocsoar 2002-11-11
  • 打赏
  • 举报
回复
to zhenyukeji(何处是我家) :
如果我各个小类里面的记录的时间不同,那这样岂不是行不通?比如我10个小类,每个小类都要求选5条出来,但这50条记录的时间都不相同。
帮帮忙。
  • 打赏
  • 举报
回复
select BIGID,LITTLEID,RECORDID,TIME from 表
where bigid in (...)
and littleid in (...)
and time<=值
group by BIGID,LITTLEID,RECORDID,TIME

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧