问题:在oracle数据库中取出中间某些行的SQL语法! 我用了如下的语法:select * from tablename where rownum>=10 and rownum<20 order by colname;结果无法取出第10条到19条记录。请问该如何写SQL才正确呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select * from tablename where rownum<20 minusselect * from tablename where rownum<11 ; 但好象加了order by条件后无效啊。 select * from(select * from tablename where rownum<20 minusselect * from tablename where rownum<10)order by colname; http://expert.csdn.net/Expert/topic/2566/2566792.xml?temp=.4474451 select * from ( select t1.*, rownum rnum from (select * from tablename order by colname) t1 where rownum <=19 ) where rnum >= 10 谢谢,终于搞定了。不过oracle确实可以针对这种需求给出一种更简单的解决办法。否则一个简单的SQL逻辑,被弄得长篇大论,片面地复杂化了。 不过我后来试验了 leecooper0918 的做法,并没有成功。 不可能吧? 我说的那种方法是效率比较高的,至少比MINUS的效率高。 参考: http://expert.csdn.net/Expert/topic/2507/2507539.xml?temp=.9630243 PL/SQL 输出问题 Oracle中两个疑问 SQL里ORDER BY 对查询的字段进行排序,字段为空不想排在最前怎么办?? to_date函数输出格式为什么不是预期的结果...... 如何去掉表前面得用户前缀? ——————超级头痛的聚合函数问题,前辈们赐教了,谢谢 加了一个实例后无法进入sqlplus了 如何dump一个schema? 问一下能否同时在一台机器中安装8i 和 9i? 创建job时报错,并非所有的变量都已绑定 备份与恢复oracle数据库的方法与步骤? 问一下关于Clob的问题,20分奉送别嫌少!
minus
select * from tablename where rownum<11 ;
select * from tablename where rownum<20
minus
select * from tablename where rownum<10
)order by colname;
(
select t1.*, rownum rnum
from (select * from tablename order by colname) t1
where rownum <=19
) where rnum >= 10
我说的那种方法是效率比较高的,至少比MINUS的效率高。
http://expert.csdn.net/Expert/topic/2507/2507539.xml?temp=.9630243