zoukankan      html  css  js  c++  java
  • oracle分页小结

    oracle分页需要用到rownum,也叫做伪列。具体过程如下:

     首先创建一张表:

      随意添加一些数据:

      然后查询rownum,通过select a1.*, rownum from test0 a1;这里必须为test0指定一个别名,否则会提示错误:

    如果要查询rownum小于9的所有行,通过select a1.*, rownum from test0 where rownum<=9;这里where子句中不可以用别名rm。

      但是,如果要查询rownum为3到9的行,select a1.*, rownum rm from test0 a1 where rownum<=9 and rownum>=3;这样做会提示:未选定行。

    这是因为rownum是在查询结果出来之前就已经开始赋值,从1开始,通过以后继续赋值2,3...当查询开始时,首先rownum=1,未通过查询条件,被丢弃,在查询时rownum会被重新赋值为1,再次被丢弃。所以,一直到最后也不会有数据通过。

    为了结果这个问题可以通过内嵌表的方式来解决,即:select a2.*, a2.rm from (select a1.*, rownum rm from test0 a1) a2 where rm<=9 and rm>=3;

    也可以将rownum<=9这个条件放在内嵌表的where子句里:select a2.*, a2.rm from (select a1.*, rownum rm from test0 a1 where rownum<=9) a2 where rm>=3;但是不能将rownum>=3放在内嵌表的查询条件中。

  • 相关阅读:
    Java之IO(一)InputStream和OutputStream
    bitset库
    assert
    C++ 与 Python 混合编程
    C++多线程
    C++11新特性
    C++性能优化指南
    C++随机数
    C++中struct与class的区别
    C++杂记
  • 原文地址:https://www.cnblogs.com/suiyu/p/2358185.html
Copyright © 2011-2022 走看看