SQL Server上簡單的分頁
来源:互联网 发布:淘宝运营月度工作总结 编辑:程序博客网 时间:2024/06/13 00:45
以下介紹幾種在SQL Server上簡單的分頁做法,大致分為三種:
1.Order By搭配not in
2.Temp Table
3.ROW_NUMBER() function
以下以Northwind資料庫作為範例:
Order By搭配not in
Select Top 10 CustomerID, CompanyName ,ContactName, Country from Customers where CustomerID Not in(Selecttop 10 CustomerID from Customers orderby CustomerID)Order by CustomerID
此做法是透過Where條件中的not in排除掉前十筆資料,以下是前20筆資料:
not in會幫忙排除掉CustomerID為1-10筆的內容,因此我們可以Select到11-20筆的資料結果:
Temp Table
select identity(int,1,1) RowNum, CustomerID, CompanyName, ContactName, Country into TempTable from Customers
將Select出來的欄位資料放到另一個Temp Table中,該Temp Table的第一個欄位是identity,為自動遞增的欄位,接著我們可對該Temp Table的RowNum(identity欄位)進行條件過濾;
由於第一個欄位是自動遞增,我們就可以將它當成是我們所要的RowNum來進行查詢,得到的資料如下:
ROW_NUMBER() Function
這個功能是在SQL Server 2005後的版本才有提供的,我們可透過以下的語法來進行處理:
Select 出來的資料如下:
在管理便利性上,我個人比較不傾向選擇Temp Table的方式,1.3兩種做法是我比較會去使用的,而如果可以選擇的話我應該會以ROW_NUMBER()這個Function的解法優先,我們以這兩句SQL的執行計畫中來看就可以看出使用ROW_NUMBER()的執行成本是較低的,主要差異應在於ROW_NUMBER()只做了一次的Clustered Index Scan,而另一個方法則是兩次:
- SQL Server上簡單的分頁
- SQL Server 分表
- SQL Server中区分大小写
- sql server 分库合并
- SQL Server里常用的语句(按功能分)
- SQL Server中部分未公开的存储过程
- SQL Server中部分未公开的存储过程
- SQL SERVER 筛选时区分大小写的语法
- 在Sql Server 2000中区分大小写
- sql server中区分大小写问题
- SQL 分頁
- SQL 分頁
- SQL Server 2005的DML触发器分After触发器的研究
- SQL Server 取前一天的0点和23点59分59秒
- SQL Server获取时间段内的每一天每一时每一分
- SQL Server经典论文系列(分门类教程)
- SQL Server导入、导出、备分数据方法
- SQL SERVER 游标逗号分隔行转列
- osg for android 学习之:JNI
- Java中的Arrays、ArrayList、Vector、Collections区别
- 【C/C++学习】之十一、指针一些事
- java 实现 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数
- 8种Nosql数据库系统对比
- SQL Server上簡單的分頁
- C#反射属性例子
- Launching Your iPhone App Via Custom URL Scheme
- asp.net Development Server单机版的IIS
- PAT, PMT in MPEG2 Stream :筆記
- linux kernel 常用函数 备忘
- Tab选项卡通用js功能函数(留着以后用)
- Newtonsoft.Json序列化和反序列
- Struts2 官方教程之Struts Tags(七)——Generic Tags(Data Tags )