rownum属于oracle中的伪列(pseudoColumns)。 用法有些细节,所以单独拉出来说明。
文章目录
- 考考你
- t_user表有20条记录,执行下列语句会返回多少条记录?
- 主内容
- rownum > 1 不返回任何结果的问题
- rownum 大于条件的使用
- 设置表的某一列为1到n序号
- oracle的分页例子(mybatis)
- oracle的分页例子(纯sql)
- 答案部分
- 其他
- 参考文献
- oracle官网帮助中心(文档)
考考你
t_user表有20条记录,执行下列语句会返回多少条记录?
语句为:
题目1答案
主内容
rownum > 1 不返回任何结果的问题
select * from t_user where rownum > 5;
该语句不返回任何结果。为什么呢?
描述:
rownum是从1开始的。
逐条拿出记录并分配rownum,再进行rownum条件判断。
过程:
先拿出一条,分配rownum=1,判断是否符合rownum>1。
不符合,丢弃掉。
再拿出一条,因为上一条丢弃掉了,所以这条rownum仍然是1,
不符合条件,继续丢弃。
以此类推,后续都不符合。所以不返回任何记录。
rownum 大于条件的使用
有的场景确实要用到rownum大于n的条件,如何使用呢?
其实很简单,给rownum加个列别名即可。sql如下:
设置表的某一列为1到n序号
有的表没有序号列,添加列之后,可以用如下语句设置序号值:
这样就sequence列就是1-n的序号的。
oracle的分页例子(mybatis)
oracle中where rownum只能写个大写或者小写。 所以需要包2层。例如mybatis中:
oracle的分页例子(纯sql)
答案部分
题目1答案
t_user表有20条记录,执行下列语句会返回多少条记录?
是10条吗? 当然不是,实际不返回任何数据。
原因本文档中有。
其他
参考文献
oracle官网rownum文档:
https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/RO WNUM-Pseudocolumn.html#GUID-2E40EC12-3FCF-4A4F-B5F2-6BC669021726
oracle官网帮助中心(文档)
https://docs.oracle.com/en/
输入搜索内容即可检索,例如搜索 rownum。