zoukankan      html  css  js  c++  java
  • ORACLE分页查询SQL语法

    首先清楚–语句写的顺序:select … from… where… group by… having… order by…
    –执行顺序:from… where…group by… having… select … order by…

    ---oracle中的分页
    --rownum行号:当我们做select操作的时候,
    --每查询出一行记录,就会在该行上加上一个行号,
    --行号从1开始,依次递增,不能跳着走。
    ---emp表工资倒序排列后,每页五条记录,查询第二页。
    --排序操作会影响rownum的顺序,因为是select先执行,然后再排序
    
    select rownum,e.* from emp e order by e.sal desc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    --如果涉及到排序,但是还是要使用rownum的话,我们可以再次嵌套查询。
    select rownum,t.* from(
    select rownum,e.* from emp e order by e.sal desc) t;
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    –rownum行号不能写上大于一个正数

    ---emp表工资倒序排列后,每页五条记录,查询第二页。
    --写的顺序:select ... from... where.... group by... having... order by..
    --执行顺序:from... where...group by... having.... select ... order by...
    --rownum行号不能写上大于一个正数
    select rownum,e.*
    from(select * from emp order by sal desc) e
    where rownum<11
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    能查出来
    在这里插入图片描述

    select rownum,e.*
    from(select * from emp order by sal desc) e
    where rownum<11 and rownum>5
    

    却查不出来 因为先执行的是where条件, rownum行号:当我们做select操作的时候,
    –每查询出一行记录,就会在该行上加上一个行号,
    –行号从1开始,依次递增,不能跳着走。小于11满足但是大于5就不满足了
    在这里插入图片描述

    但是可以下面这样:

    select * from(
        select rownum rn,tt.* from(
               select * from emp order by sal desc
               ) tt where rownum<11) tt
    where rn >5;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    可视化工具Grafana:简介及安装
    数据采集工具Telegraf:简介及安装
    怒怼某些自媒体培训机构,吃相不要太难看了!!!
    时序数据库InfluxDB:简介及安装
    jmeter(二十五)linux环境运行jmeter并生成报告
    Linux:CentOS7.4新建用户并授权
    服务端监控工具:Nmon使用方法
    Locust:简介和基本用法
    Quant Finance Master’s Guide 2020
    数据科学入门前需要知道的10件事
  • 原文地址:https://www.cnblogs.com/zmystc/p/13495190.html
Copyright © 2011-2022 走看看