zoukankan      html  css  js  c++  java
  • SQLServer分页查询笔记

    学习SqlServer到现在快两年了吧,分页查询总是忘了看笔记,看了又忘。之前用的分页都是row_number函数的方式,背不住。。。直到今天,看到别人写的另一种分页写法,看似比row_number简单。好记。。。

    分页原理:越过多少条,取多少条

    --    一页取五条
    select top(5) * from Employees where EmployeeID not in 
    (
        --    越过多少条(越过多少页*每页的条数)
        select top(5*2) EmployeeID from Employees order by EmployeeID
    )order by EmployeeID

    以前用的row_number函数的方式也记录一下吧

    --两种写法没什么两样,都可以实现,
    
    --between    第一种
    select * from 
    (
        select *,row_number() over(order by id)as number from Student
    )as s 
    where s.number between 5 and 8
    
    
    
    --第二种
    select * from 
    (
        select*,row_number()over(order by id) as num from  Student
    )as stu 
    where stu.num>=20 and stu.num<=30
    View Code

    论上面两者的效率的话,数据量不是很大的时候也都差不多吧,数据量大的时候也许row_number更高效些。第一种方式取前面部分和后面部分的数据比较高效,如果说数据量很大用第一种方式取中间部分数据的话相对来说比较慢的。

    row_number函数分页相对来说比较通用

    刚刚搜索引擎查了下分页方法,没想到还有其他方法。。在这也记一下吧,虽然对其还不是很理解,有时间在看看相关资料了解一下

    --跳过多少条,取多少条        offset 需要跳过的条数    rows fetch next 每页取的条数 rows only
    select * from City order by CityId offset 5 rows fetch next 5 rows only

    查询结果:

    这个分页方法我对它的理解是  offset(需要跳过的条数)  假设一页分10条,你当前是第三页那么就填(3*10)当前页*每页的条数,next (每页的条数),如果每页显示10条,那么就是 next 10

    以上纯属个人理解

    offset--->偏移      next--->下一个

  • 相关阅读:
    状压DP之排列perm
    CodeForces 578F Mirror Box
    Berlekamp-Massey算法
    图解git操作
    yapi安装
    springcloud gateway
    springcloud alibaba
    反射和内置方法
    绑定方法与非绑定方法
    多态性和鸭子类型
  • 原文地址:https://www.cnblogs.com/heheblog/p/SQLServer_Study_20180723.html
Copyright © 2011-2022 走看看