SqlServer簡單數據分頁

来源:http://www.cnblogs.com/zhuyuannet/archive/2016/12/16/6182805.html
-Advertisement-
Play Games

手邊開發的後端項目一直以來都用的.NET MVC框架,訪問資料庫使用其自帶的EF CodeFirst模式,寫存儲過程的能力都快退化了 閑來無事,自己寫了條分頁存儲過程,網上類似的文章多的是,這裡只列了一種情況,依據分析函數生成行號來實現分頁查詢 環境:sqlServer 2014 創建資料庫過程不再 ...


手邊開發的後端項目一直以來都用的.NET MVC框架,訪問資料庫使用其自帶的EF CodeFirst模式,寫存儲過程的能力都快退化了

閑來無事,自己寫了條分頁存儲過程,網上類似的文章多的是,這裡只列了一種情況,依據分析函數生成行號來實現分頁查詢

 

環境:sqlServer 2014

創建資料庫過程不再敖述,這裡直接進入重點:

1、首先創建了一張TestAdmin表,主鍵為ID欄位int類型且自增

1 create table TestAdmin (
2 Id int identity(1,1) primary Key,
3 Name varchar(Max),
4 Age int
5 )

2、接著批量導入1000條模擬數據

 1 declare @count int
 2 --這裡定義模擬數據條數
 3 set @count=1000
 4 
 5 
 6 while(@count>0)
 7 begin
 8 insert into TestAdmin (Name,Age) values ('zhuyuan'+convert(varchar,@count),@count)
 9 set @count=@count-1
10 end
1 select * from TestAdmin

導入完成,開始分頁:

大致思路為首先按一定排序規則查詢出所有數據,然後為每一行自動生成行號,然後再對生成行號後的表進行where語句篩選處理

3、我們先為主表每行插入一列相同數據生成表V1,目的主要是為了後面的分析函數可以對錶進行單行聚合

1 select *,1 as SameRow from TestAdmin

  • (表V1)

4、再對錶V1進行生成行號處理,利用sqlServer自帶分析函數ROW_NUMBER()可實現該功能

1 select ROW_NUMBER() over(partition by SameRow order by Id) as Row,* from (select *,1 as SameRow from TestAdmin)m

生成表V2

  • (表V2)

這時我們已經有一張具有索引行號的表V2,後面的操作就清晰了

5、假設我們需要每頁10條數據,且查詢第二頁

1 select * from (select ROW_NUMBER() over(partition by SameRow order by Id) as Row,* from (select *,1 as SameRow from TestAdmin)m)o where o.Row between 1*10+1 and 2*10

6、再做一次封裝,為它創建一個存儲過程,便於我們以後再次調用

1 create proc select_page
2 (
3 @pageIndex int,--當前頁碼
4 @pagecount int--每頁條數
5 )
6 as
7 begin
8 select * from (select ROW_NUMBER() over(partition by SameRow order by Id) as Row,* from (select *,1 as SameRow from TestAdmin)m)o where o.Row between @pageIndex*@pagecount+1 and (@pageIndex+1)*@pagecount
9 end

存儲過程創建成功!

7、我們來試一下,假設要查詢第5頁,每頁10條

1 select_page 5,10

 

後面再對該表進行分頁查詢時就明顯輕鬆許多^o^

                                                                                                                                                                                                                                                                       留個腳印——2016.12.16 中午(陽光正好)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ORAchk概述 ORAchk是Oracle官方出品的Oracle產品健康檢查工具,可以從MOS(My Oracle Support)網站上下載,免費使用。這個工具可以檢查Oracle資料庫,GoldenGate,Oracle Enterprise Manager 12c、13c等Oracle產品, ...
  • 一:redis的安裝 1、 首先上官網下載Redis 壓縮包,地址:http://redis.io/download 下載 2、 通過遠程管理工具,將壓縮包拷貝到Linux伺服器中,執行解壓操作 3、 進入redis目錄執行make 對Redis解壓後文件進行編譯 4、 編譯完成之後,進入src文件 ...
  • 插入insert 單條插入 批量插入 如果在執行批量插入的過程中有一個文檔插入失敗,那麼在這個文檔之前的所有文檔都會插入成功,之後的所有全部失敗。 刪除文檔 remove remove函數接受一個查詢文檔作為參數。符合條件的文檔才被刪除。刪除數據是永久性的,不能撤銷,也不能恢復。 drop 要清空整 ...
  • SqlBulkCopy的原理就是通過在客戶端把數據都緩存在table中,然後利用SqlBulkCopy一次性把table中的數據插入到資料庫中。 補充一下: SqlBulkCopy的ColumnMappings中列的名稱受大小寫敏感限制,在構造DataTable的時候需要註意列名要與表一致。 關於s ...
  • /****** Object: UserDefinedFunction [dbo].[GetDirectoryPath] Script Date: 2016-12-16 16:54:05 ******/ SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCRE ...
  • 原理很簡單的'drop proc xxx'即可,下麵有提供了兩種方式來刪除存儲過程 ...
  • DB2重啟資料庫實例時,有時停止實例會失敗,此時需要先確認沒有應用鏈接資料庫,然後再關閉資料庫實例,並重新啟動。 1.查看是否有活動的鏈接 命令:db2 list applications for db db_name 發現有兩個活動鏈接,此時需要將鏈接進行關閉。 2.關閉連接 命令:db2 for ...
  • 1.創建表空間 2.創建用戶、表空間並設置許可權 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...