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

    假设有表如下
    CREATE TABLE test
    (
     id int primary key not null identity,
     names varchar(20)
    问id是递增的,为啥不能对id操作
    假设啊,表可能有个删除操作,id不是连续的,再假设查询是有条件的,查出来的id也不是连续的
    插入100条数据
    问:
    分10页,每页10 ,取第五页
    计算currentPage=5
    PageSize=10
    那么 start=(currentPage-1)*PageSize+1
    end=start+PageSize-1
    也就是40-50条数据
    不使用临时表归集数据的情况
    oracle中
    select*from test where ROWNUM<=50 and ROWNUM>=41
    这样不行为什么
    得这样
    select*from (select ROWNUM rn ,names from test where ROWNUM<=50 ) where rn>=41
    还有一种
    select*from (select row_number() over(order by id) rn ,names from test) where rn>=41 and rn<=50
    更高效点select*from (select row_number() over(order by id) rn ,names from testwhere ROWNUM<=50 ) where rn>=41
    sql server 中
    row_number() over (order by) 一样用法
     
    使用临时表
    临时表的话,也一样,最后的临时表中创建序号字段
    最后数据归集到临时表时用row_number() over(order by id) 排序确定序号的值
    然后对最后的临时表进行分页查询
    直接对序号字段操作就可以了
     
  • 相关阅读:
    Windows CMD 配置 启动 服务
    Starting a Service
    socket 相关文章
    Qt GUI程序带命令行
    socket 双向
    winsock Options
    winsock 主动切断连接 Connection Setup and Teardown
    在 u 开头的单词前面,用 a 还是 an
    Web自动化----搭建基本环境
    Python----yield 生成器
  • 原文地址:https://www.cnblogs.com/liuyudong0825/p/12434764.html
Copyright © 2011-2022 走看看