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;
用大于小于 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中的字段就可用了。
第2个回答 推荐于2017-09-14
假设查询的是第20行前后10条数据 前十条 select * from tb where rownum < 20 minus select * from tb where rownum =< 9 后十条 类似的写法本回答被提问者采纳