问题:在oracle数据库中取出中间某些行的SQL语法!

zhangxhsj 2003-12-17 12:08:37
我用了如下的语法:
select * from tablename where rownum>=10 and rownum<20 order by colname;

结果无法取出第10条到19条记录。

请问该如何写SQL才正确呢?
...全文
128 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
boydgmx 2003-12-17
  • 打赏
  • 举报
回复
select * from(
select * from tablename where rownum<20
minus
select * from tablename where rownum<10
)order by colname;
zhangxhsj 2003-12-17
  • 打赏
  • 举报
回复
但好象加了order by条件后无效啊。
lianhg 2003-12-17
  • 打赏
  • 举报
回复
select * from tablename where rownum<20
minus
select * from tablename where rownum<11 ;

leecooper0918 2003-12-17
  • 打赏
  • 举报
回复
参考:
http://expert.csdn.net/Expert/topic/2507/2507539.xml?temp=.9630243
leecooper0918 2003-12-17
  • 打赏
  • 举报
回复
不可能吧?
我说的那种方法是效率比较高的,至少比MINUS的效率高。
zhangxhsj 2003-12-17
  • 打赏
  • 举报
回复
不过我后来试验了 leecooper0918 的做法,并没有成功。
zhangxhsj 2003-12-17
  • 打赏
  • 举报
回复
谢谢,终于搞定了。

不过oracle确实可以针对这种需求给出一种更简单的解决办法。

否则一个简单的SQL逻辑,被弄得长篇大论,片面地复杂化了。
leecooper0918 2003-12-17
  • 打赏
  • 举报
回复
select * from
(
select t1.*, rownum rnum
from (select * from tablename order by colname) t1
where rownum <=19
) where rnum >= 10
lynx1111 2003-12-17
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2566/2566792.xml?temp=.4474451

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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