oracle中如何查询一条数据的前后十条记录

 我来答
joy_js123
2011-04-13 · 超过18用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:43.6万
展开全部
1、有时间字段, 根据时间条件排序,取前十条和后十条
(1)前十条:
select * from (select * from tab_name a order by date_col )
where rownum<11;
(2)后十条:
select * from (select * from tab_name a order by date_col desc)
where rownum<11;

2、没有时间字段, 直接根据物理存储顺序,取前十条和后十条
(1)前十条:
select * from (select * from tab_name a order by rownum)
where rownum<11;
(2)后十条:
select * from (select * from tab_name a order by rownuml desc)
where rownum<11;
匿名用户
2011-04-13
展开全部
用大于小于
SELECT * FROM TABLE WHERE DATACOLUMN < 这条数据的这个(或者直接干脆写select语句把这个数据取出来) AND ROWNUM <= 10
UNION ALL
SELECT * FROM TABLE WHERE DATACOLUMN > 这条数据的这个 AND ROWNUM <= 10
追问
是用一条sql把前后十条查出来的,谢谢???
追答
UNION ALL,查询的就是前后10条
以某条数据为例,前10条肯定是默认排序的小于本行某个字段的值的前10行
而后10条是大于本行某个值的前10行

只用一个SELECT是不可能的。你可以把以上的UNION ALL看成一个表,然后在外面套一个select * from ( a union all b ) t,这样t中的字段就可用了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuxyq501850
推荐于2017-09-14 · 超过48用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:105万
展开全部
假设查询的是第20行前后10条数据
前十条 select * from tb where rownum < 20
minus
select * from tb where rownum =< 9
后十条 类似的写法
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式