三種SQLServer分頁查詢語句筆記

作為程序員來說,與數據庫打交道是十分頻繁的分頁查詢是一個開發者必須掌握的基本知識點,目前整理了下面三種SQLServer分頁查詢語句的寫法,僅供參考。

一、Top Not IN 方式(查詢靠前的數據較快)

語法格式:

select?top pageSize 列名 ?from?tablename

select?top?條數?*??from?tablename

where?Id?not?in?(select?top?pageSize*(pageIndex-1) ?Id?from?tablename)

示例:

SELECT TOP 2 ?* FROM Users

WHERE Id NOT IN (SELECT TOP 2

Id FROM Users)

二、ROW_NUMBER()?OVER()方式 ?(查詢靠后的數據速度比上一種較快)

語法格式:

SELECT?*?FROM?(SELECT?*,

ROW_NUMBER()?OVER(Order?by?Id?)?AS?RowNumber?from?tablename )?as?b

where RowNumber?between pageIndex-1*pageSize?and?pageIndex*pageSize

示例:

SELECT* FROM (

SELECT*,ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber FROM Users ) as b

where RowNumber BETWEEN 0 and 3

三、offset?fetch?next方式 (速度優于前兩者,限制Sql2012以上可以使用)

語法格式:

select * from tablename

order by Id offset pageIndex?row fetch next pageSize row only

示例:

select * from Users ? order by Id offset 2 row fetch next 5 row only

四、一個比較好用的分頁存儲過程

create PROCEDURE GetPageData

(

@TableName varchar(30),--表名稱

@IDName varchar(20),--表主鍵名稱

@PageIndex int,--當前頁數

@PageSize int--每頁大小

)

AS

IF @PageIndex > 0

BEGIN

set nocount on

DECLARE @PageLowerBound int,@StartID int,@sql nvarchar(225)

SET @PageLowerBound = @PageSize * (@PageIndex-1)

IF @PageLowerBound<1

SET @PageLowerBound=1

SET ROWCOUNT @PageLowerBound

SET @sql=N'SELECT @StartID = ['+@IDName+'] FROM '+@TableName+' ORDER BY '+@IDName

exec sp_executesql @sql,N'@StartID int output',@StartID output

SET ROWCOUNT 0

SET @sql='select top '+str(@PageSize) +' * from '+@TableName+' where ['+@IDName+']>='+ str(@StartID) +' ORDER BY ['+@IDName+'] '

EXEC(@sql)

set nocount off

END

歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺

閱讀原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272781.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272781.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272781.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sqlserver2008r2安裝

轉載于:https://www.cnblogs.com/sprinng/p/4932739.html

JQuery七個常犯的錯誤

1、 亂用選擇器JQuery選擇器調用代價很大&#xff0c;反復調用效率更低。應采用緩存對象的方法或采用鏈式調用的方式。//錯誤的寫法$("#button").click(function(){ $(#list li).addClass(strong); $(#list li).css(color,red);});//正確的寫法$("#button…

java流讀取xml_使用FileInputStream(用于Java)讀取XML文件?

這是交易.對于我的項目,我必須使用Java和XStream對隨機樹進行序列化和反序列化.我的老師制作了Tree / RandomTree算法,所以我不必擔心.我不知道該怎么做是這樣的&#xff1a;我使用FileInputStream來讀/寫我序列化和反序列化的xml文件,但是當我反序列化時,我不知道用于讀取文件…

后臺尋路系統的大體思路與流程

總的思路就是: 1, 通過前臺unity的navigation的的接口: 獲得頂點和三角形集合數據 2, 將前臺的mesh數據轉換成標準的obj格式數據 3. 強obj mesh數據經過一系列轉換和優化, 生成recastnavigation插件尋路模塊detour需要的導航數據 故制作了工具MakeNavmeshData生成detour需要的…

關于WCF、WebAPI、WCFREST、WebService之間的區別總結

在.net平臺下&#xff0c;有大量的技術讓你創建一個HTTP服務&#xff0c;像Web Service&#xff0c;WCF&#xff0c;現在又出了Web API。在.net平臺下&#xff0c;你有很多的選擇來構建一個HTTP Services。我分享一下我對Web Service、WCF以及Web API的看法。一、Web Service1、…

java 程序是由什么組成的 java_從零開始的JAVA -2. java程序的構成及命名規則

1.public classYD2.{3. public static voidmain (string args[ ])4. {5. System.out.println("我是一名學習JAVA的新人&#xff01;");6. }7.}第一行 public 代表這是一個公共類(可省略) class 是聲明一個類&#xff0c;在他后面的YD 就是類名(類名可以隨意寫)第二行…

你應該知道的jQuery技巧【收藏】

jQuery的存在&#xff0c;讓學習前端開發的人感到前端越來越容易入門了&#xff0c;用簡單的幾行代碼就可以實現需求&#xff0c;但是&#xff0c;你真的會用jQuery么&#xff0c;當代碼運行 后無法看到自己預期的效果&#xff0c;是不是覺得jQuery出了問題&#xff0c;其實&am…

LINQ表達式用法整理

收集一些Linq表達式中的一些比較常用的寫法&#xff0c;希望能給大家工作當中帶來一些便利。1. Where子句條件過濾結果集型&#xff08;集合數據使用這種&#xff0c;譬如數組、列表數據&#xff0c;同樣適用于Datatable等多列數據集&#xff09;類SQL語句的寫法&#xff0c;對…

Eclipse is running in a JRE, but a JDK is required 解決方法(轉)

轉自&#xff1a;http://comeonbabye.iteye.com/blog/1186239 安裝Maven后每次啟動出現警告信息: Eclipse is running in a JRE, but a JDK is requiredSome Maven plugins may not work when importing projects or updating source folders. 分兩步解決問題: 1. 檢查Eclipse正…

java線程歸并排序_Java-歸并排序 - FeanLau的個人空間 - OSCHINA - 中文開源技術交流社區...

public class MergeSort {static int number0;public static void main(String[] args) {int[] a {26, 5, 98, 108, 28, 99, 100, 56, 34, 1 };printArray("排序前&#xff1a;",a);MergeSort(a);printArray("排序后&#xff1a;",a);}private static voi…

收集一些優秀的DoNet開源項目

Paste_Image.pngJson.NEThttp://json.codeplex.com/ Json.Net是一個讀寫Json效率比較高的.Net框架.Json.Net 使得在.Net環境下使用Json更加簡單。通過Linq To JSON可以快速的讀寫Json&#xff0c;通過JsonSerializer可以序列化你的.Net對象。讓你輕松實現.Net中所有類型(對象,基…

git初探

1 Linux下Git和GitHub環境的搭建 第一步&#xff1a; 安裝Git&#xff0c;使用命令 “sudo apt-get install git” 第二步&#xff1a; 到GitHub上創建GitHub帳號 第三步&#xff1a; 生成ssh key&#xff0c;使用命令 “ssh-keygen -t rsa -C "your_emailyouremail.com&q…

java編程思想 初始化_《java編程思想》_第五章_初始化與清理

初始化和清理是涉及安全的兩個問題&#xff0c;java中采用了構造器&#xff0c;并額外提供了“垃圾回收器”&#xff0c;對于不再使用的內存資源&#xff0c;垃圾回收器能自動將其釋放。一、用構造器確保初始化java中&#xff0c;通過提供構造器&#xff0c;類的設計者可以確保…

OkHttp 上手

OkHttp 上手 優點 快、節省帶寬。支持 HTTP&#xff0f;2 和 SPDY。HTTP&#xff0f;2 和 SPDY 允許對同一個主機的所有請求&#xff0c;使用一個 socket。如果不支持 SPDY 的話&#xff0c;可以用連接池減少請求等待時間。GZIP 縮小傳輸大小。緩存響應&#xff08;response ca…

關于Net開發中一些SQLServer性能優化的建議

一、 ExecuteNonQuery和ExecuteScalar 對數據的更新不需要返回結果集&#xff0c;建議使用ExecuteNonQuery。由于不返回結果集可省掉網絡數據傳輸。它僅僅返回受影響的行數。如果只需更新數據用ExecuteNonQuery性能的開銷比較小。 ExecuteScalar它只返回結果集中第一行的第一列…

jstl mysql_java – jsp jstl sql與mysql中的奇怪行為

在mysql中我有一個存儲過程,其中包含一個sql&#xff1a;select firstname as i_firstname , lastname as i_lastname from roleuserwhere user_id uid ;我使用jstl代碼來獲取值&#xff1a; –call sp_select_username(?);${rows.i_firstname} ${rows.i_lastname}但是這個代…

C# 哈希表(Hashtable)用法筆記

一、什么是Hashtable&#xff1f;Hashtable 類代表了一系列基于鍵的哈希代碼組織起來的鍵/值對。它使用鍵來訪問集合中的元素。當您使用鍵訪問元素時&#xff0c;則使用哈希表&#xff0c;而且您可以識別一個有用的鍵值。哈希表中的每一項都有一個鍵/值對。鍵用于訪問集合中的項…

轉: Div與table的區別

1&#xff1a;速度和加載方式方面的區別 div 和 table 的差異不是速度&#xff0c;而是加載方式&#xff0c;速度只能是指網絡速度&#xff0c;如果速度足夠快&#xff0c;是沒有差異的&#xff1a; div 的加載方式是即讀即加載&#xff0c;遇到 <div> 沒有遇到 </div…

你的工作是為了你自己!

1、無論為誰打工&#xff0c;要為自己學東西&#xff0c;客觀為公司創造價值。我自己當年&#xff0c;無論我在方正給國內企業工作&#xff0c;還是我在雅虎給外國人工作&#xff0c;我都跟別人最大的不一樣&#xff0c;我從來不覺得我在給他們打工&#xff0c;我真的可能是很有…

java 無法注入service_SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題

網上說了很多諸如是Spring加載順序&#xff0c;shiroFilter在Spring自動裝配bean之前的問題&#xff0c;其實也有可能忽略如下低級錯誤。在ShiroConfiguration中要使用Bean在ApplicationContext注入MyRealm&#xff0c;不能直接new對象。道理和Controller中調用Service一樣&…