在一个查询语句里,查询出满足某个条件的20个记录集,同时返回满足条件的总的记录个数,可以吗?比如我要从表A中获取年龄大于23岁且按照年龄大小排好序的前20个纪录,同时能获得年龄大于23岁的总记录个数;烦请写个select语句以说明一下。
解决方案 »
- 在触发器或者过程中如何使用SET feedback ON
- 存储过程返回结果集的问题
- insert into 語句執行不成功,找找原因,謝謝了
- 在java中怎么调用oracle的自定义函数啊?万分感谢
- 请问在ORACLE中怎样查找那些视图,存储过程使用了某个DBLINK, 谢谢, 在线等
- EXECUTE IMMEDIATE 语句?????
- 用connect by实现树状结构时如何只显示最末端树叶的数据?
- 登陆问题 急加20分
- 请问怎么在ado对象里访问dbms_output.put_line('kkkkkkkkkkkk')输出的值?
- ORACLE数据库,字段类型是VARCHAR2(20),里面显示的是时间,如何都统一为10位
- [求助]ORACLE中使用 Database link 怎么查询连接库里的序列值?
- 对创建表空间语句求大神详细解释
下面的试试
select a.*,count(b.*) from (select a.*,row_number() over (order by age ) rn from tab where tab.xxx= (写上限制条件))a ,tab b where a.rn>0 and a.rn<10 and b.xxx=(写上限制条件)
from
(select a.*
,row_number() over(order by age) rn
,count() over() cnt
from tab a
where a.age>23
)t
where t.rn<=20
;
(
ID NUMBER(4),
NAME VARCHAR2(20),
Age NUMBER(4)
);
INSERT INTO T87 VALUES(1, 'A', 12);
INSERT INTO T87 VALUES(2, 'B', 23);
INSERT INTO T87 VALUES(3, 'C', 18);
INSERT INTO T87 VALUES(4, 'D', 25);
INSERT INTO T87 VALUES(5, 'E', 27);
INSERT INTO T87 VALUES(6, 'F', 21);
INSERT INTO T87 VALUES(7, 'G', 30);
INSERT INTO T87 VALUES(8, 'H', 22);
实测结果:返回年龄大于23的前3条记录。
另再请教下,这样子查询合理吗?是否分开2次查询(一次查询出满足条件的记录数目,另一次查询出满足条件并排好序的其中20条记录),哪个效率高些?