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为什么一条都数据都没有啊 谢谢!
展开
4个回答
展开全部
你这样肯定有问题,
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
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
展开全部
因为 第一条 记录的 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
你要 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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你要是用 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>
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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询