STUDENT(学生信息表)
ID NUMBER(8) N 学号
NAME VARCHAR2(10) N 姓名
AGE NUMBER(4) N 年龄
REMARK VARCHAR2(100) Y 备注
-----------------------------------
SELECT *
FROM
(
SELECT RESULT.*, ROWNUM rn
FROM
(
SELECT a.id
|| '|'
|| a.name
|| '|'
|| a.AGE
|| '|'
|| a.REMARK
FROM STUDENT a
ORDER BY a.AGE DESC
) RESULT
)
WHERE rn >= 101 AND rn <= 200
------------------------------------------------
以上sql是查询出年龄是第101名到第200名之间的100名学生(假定年龄不重复)的信息并将信息进行字符串连接(用“|”隔开)
------------------------------------------------
?优化上面那条sql语句,尽可能的提高查询效率
可以不基于以上sql语句,只要返回结果集相同,用其他思路实现效率的提高亦可
ID NUMBER(8) N 学号
NAME VARCHAR2(10) N 姓名
AGE NUMBER(4) N 年龄
REMARK VARCHAR2(100) Y 备注
-----------------------------------
SELECT *
FROM
(
SELECT RESULT.*, ROWNUM rn
FROM
(
SELECT a.id
|| '|'
|| a.name
|| '|'
|| a.AGE
|| '|'
|| a.REMARK
FROM STUDENT a
ORDER BY a.AGE DESC
) RESULT
)
WHERE rn >= 101 AND rn <= 200
------------------------------------------------
以上sql是查询出年龄是第101名到第200名之间的100名学生(假定年龄不重复)的信息并将信息进行字符串连接(用“|”隔开)
------------------------------------------------
?优化上面那条sql语句,尽可能的提高查询效率
可以不基于以上sql语句,只要返回结果集相同,用其他思路实现效率的提高亦可
解决方案 »
- goldengate问题
- 连击删除的按钮,会产生什么后果?
- 根据期间条件和起始时间查询每年或每月的数据
- 问一条SQL
- 对clob字段的查询可用dbms_lob.instr(clob_field,'some text',1,1) > 0作为查询条件,但好像直接用instr(clob_field,'some text',1,1) >
- 一个简单的SQL语句如何写?
- 一个难解决的问题,求救.
- 刚开始接触Oracle,不知道现在是什么版本了?
- Oracle连接不上用户,求大佬帮帮忙
- oracle导出数据,同一个session却导出的两个文件,编码格式却不一样
- 一个PL/SQL块,本地动态SQL执行DDL语句:
- ?一个存储过程
FROM
(
SELECT ROWNUM rn, a.id || '|' || a.name || '|' || a.AGE || '|' || a.REMARK
FROM STUDENT a
ORDER BY a.AGE DESC
)
WHERE rn >= 101 AND rn <= 200
-----
不行的,这个rownum是原student的。把 rn <= 200的条件放在倒数第二层试试,不知道有没有效果。