oracle rownum的问题

在oracle的scott用户表下查询全表使用rownum代码如下:selectrownum,empno,ename,job,mgr,hiredatefromempwhe... 在oracle 的scott用户表下查询全表 使用rownum 代码如下: select rownum ,empno ,ename,job,mgr,hiredate from emp where rownum >2为什么一条都数据都没有啊 谢谢! 展开
 我来答
flyingFish211
推荐于2017-10-04 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
你这样肯定有问题,
rownum是对结果集的编序排列,始终是从1开始,所以你的rownum>2永远为假,所以就没记录返回。。。

rownum只能用于<,如果要用>要么用rownumber()OVER,要么就实例化

用ROW_NUMBER() OVER()解决

SELECT empno, ename, job, mgr, hiredate
FROM (SELECT empno, ename, job, mgr, hiredate,
ROW_NUMBER() OVER(ORDER BY empno) rk
FROM emp) t
WHERE rk > 2

或者实例化就可以了
SELECT empno, ename, job, mgr, hiredate
FROM (SELECT empno, ename, job, mgr, hiredate,
rownum rk
FROM emp) t
WHERE rk > 2
wangzhiqing999
2010-10-06 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3263万
展开全部
因为 第一条 记录的 rownum = 1

你要 rownum >2 那第一条就没法出来, 就结束了。

SELECT *
FROM
(select rownum AS no,empno ,ename,job,mgr,hiredate from emp)
WHERE
no > 2

这样是可行的。 首先把 1,2,3,4,5,6......都读取出来

然后要求 > 2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
perfect_zq
2010-10-06
知道答主
回答量:27
采纳率:0%
帮助的人:12万
展开全部
如果你要是用 rownum查询只能使用
SQL> select rownum ,empno ,ename,job,mgr,hiredate from emp where rownum < 5; 查询前四条的记录!

ROWNUM EMPNO ENAME JOB MGR HIREDATE
---------- ---------- ---------- --------- ---------- ------------------
1 7369 SMITH CLERK 7902 17-DEC-80
2 7499 ALLEN SALESMAN 7698 20-FEB-81
3 7521 WARD SALESMAN 7698 22-FEB-81
4 7566 JONES MANAGER 7839 02-APR-81

SQL>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jjych3
2019-09-13
知道答主
回答量:1
采纳率:0%
帮助的人:690
展开全部
rownum 是伪列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式