【轉載】Sqlserver的SQL語句實現分頁查詢

来源:https://www.cnblogs.com/xu-yi/archive/2019/02/27/10446922.html
-Advertisement-
Play Games

在應用程式的開發中,如果資料庫中的數據量過於的龐大,則需要針對查詢數據做分頁處理,取出對應分頁中的數據,在Sqlserver分頁的語句寫法中,有兩種比較常用,一種是數據表中含有自增量Id的情況,可以根據Id的大小順序進行分頁,另一種是資料庫中不存在Int類型的Id的情況,此時就需要通過Row_Num ...


在應用程式的開發中,如果資料庫中的數據量過於的龐大,則需要針對查詢數據做分頁處理,取出對應分頁中的數據,在Sqlserver分頁的語句寫法中,有兩種比較常用,一種是數據表中含有自增量Id的情況,可以根據Id的大小順序進行分頁,另一種是資料庫中不存在Int類型的Id的情況,此時就需要通過Row_Number函數來實現分頁。

(1)數據表中存在自增量Id的情況

假設我們查詢的表名稱為Student,包含的欄位有:Id(Id號,自增變數)、Name(姓名)、BirthDay(出生日期)。按出生日期從早到晚排序,獲取排序後第31到60個學生的信息,語句可以使用Select Top的方式書寫。具體如下:

Select Top 30 * FROM Student Where Id Not In (Select Top 30 FROM Student Order By BirthDay) Order By BirthDay

如果是獲取第91到120排位的學生的話,則是下列語句。

Select Top 30 * FROM Student Where Id Not In (Select Top 90 FROM Student Order By BirthDay) Order By BirthDay

(2)數據表中不存在Id的情況

此種情況不可能再使用top來排序了,可使用row_Number進行排序後再篩選對應的值。

更改上述的Student表的結構為:StudentCode(文本類型,非數字)、Name(姓名)、BirthDay(出生日期)。按出生日期從早到晚排序,獲取排序後第31到60個學生的信息,此時的SQL語句為:

With tempTb AS
(
   Select ROW_NUMBER() OVER(order by BirthDay ASC) AS RowNumber,* FROM Student
)
Select * FROM tempTb Where RowNumber>30 AND RowNumber<=60

在臨時表tempTb中使用了ROW_NUMBER() OVER來獲取排序後的序號,Over裡面為排序的規則。

 

備註:此文章轉載自博主個人技術站點,博主個人站致力於分享相關技術文章,同時也分享Windows伺服器和Linux伺服器運維等知識:IT技術小趣屋

轉載請標明出處。


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

-Advertisement-
Play Games
更多相關文章
  • 報錯: You are trying to add a non-nullable field 'BookName' to BookInfo without a default; we can't do that (the database needs something to populate ex ...
  • Magazine Ad The main city magazine offers its readers an opportunity to publish their ads. The format of the ad should be like this: There are space-s ...
  • [toc] Go語言中 指針不能運算 參數傳遞 不像C++、Java、Python等語言一樣參數傳遞有 值傳遞和引用傳遞 兩種方式, Go語言只有值傳遞 。 定義變數類型的時候就應考慮如何使用該變數,用作一個值還是一個指針。 參數傳遞示意圖: 傳遞變數 傳遞指針 傳遞對象 ...
  • Hello,大家好! 好久沒有開始記錄博客了,是時候開始分享一下了,這個系列主要為零基礎的同學,量身打造的。廢話不多說,我們開乾! 什麼是ASP.NET MVC MVC(Model-View-Controller)--[模型--視圖--控制器],是一種設計模式,它將一個應用程式拆分成下麵三個主要的組 ...
  • 添加default.cshtml 使用方法: 效果如圖: ...
  • 根據《互聯網信息服務管理辦法》以及《非經營性互聯網信息服務備案管理辦法》,所有對中國大陸提供服務的網站都必須先進行ICP備案,才可開通服務。如果網站的功能變數名稱未備案,並且網站存在中國大陸的伺服器上,則會被禁止訪問,因此首先要先進行功能變數名稱的備案操作,每個雲伺服器廠商都有相應的備案系統可以幫助用戶快捷的備案, ...
  • 在應用程式的開發中,文件操作的使用基本上是必不可少的,FileStream類、StreamWriter類、Directory類、DirectoryInfo類等都是文件操作中時常涉及到的類,我們可以通過封裝這一系列的文件操作為一個工具類,該工具類包含文件的讀寫、文件的追加、文件的拷貝、刪除文件、獲取指 ...
  • 在阿裡雲ECS伺服器的使用過程中,如果是安全意識高的運維人員,可能會發現雲伺服器廠商基本上提供的了個叫做安全組的功能設置項。安全組相當於一個虛擬的防火牆,類似於Windows系統的防火牆,在安全組內可以放行系統相應的埠號以及IP訪問的許可權(如設置只能某些IP才可訪問此台伺服器)等,安全組功能是雲服 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...