1. 程式人生 > >四種方式實現SQLServer 分頁查詢

四種方式實現SQLServer 分頁查詢

SQLServer 的資料分頁:

假設現在有這樣的一張表:
CREATE TABLE test
(
 id int primary key not null identity,
 names varchar(20)
)
然後向裡面插入大約1000條資料,進行分頁測試
假設頁數是10,現在要拿出第5頁的內容,查詢語句如下:
--10代表分頁的大小
select top 10 *
from test
where id not in
(
 --40是這麼計算出來的:10*(5-1)
 select top 40 id from test order by id
)
order by id
原理:需要拿出資料庫的第5頁,就是40-50條記錄。首先拿出資料庫中的前40條記錄的id值,然後再拿出剩餘部分的前10條元素


第二種方法:
還是以上面的結果為例,採用另外的一種方法
--資料的意思和上面提及的一樣
select top 10 *
from test
where id >
(
 select isnull(max(id),0)
 from 
  (
   select top 40 id from test order by id
  ) A
)
order by id
原理:先查詢前40條記錄,然後獲得其最id值,如果id值為null的,那麼就返回0
然後查詢id值大於前40條記錄的最大id值的記錄。
這個查詢有一個條件,就是id必須是int型別的。


第三種方法:
select top 10 *
from 
(
 select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40
原理:先把表中的所有資料都按照一個rowNumber進行排序,然後查詢rownuber大於40的前十條記錄
這種方法和oracle中的一種分頁方式類似,不過只支援2005版本以上的

第四種:
儲存過程查詢
建立儲存過程
alter procedure pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @[email protected]*(@page - 1)
begin
 select top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end
執行儲存過程
exec 10,5

相關推薦

方式實現SQLServer 查詢

SQLServer 的資料分頁: 假設現在有這樣的一張表: CREATE TABLE test (  id int primary key not null identity,  names varchar(20) ) 然後向裡面插入大約1000條資料,進行分頁測試 假設頁數是10,現在要拿出第5頁的內容,

Asp.Net北大青鳥總結()-使用GridView實現真假

void 每次 第三方控件 ati exec open() lld ret ges 這段時間看完了asp.net視頻。可是感覺到自己的學習好像沒有鞏固好,於是又在圖書館裏借了幾本關於asp.net的書感覺真的非常好自己大概對於asp.net可以實現主要的小D

java 方式實現字符流文件的拷貝對比

put In exception bytes public 字節緩沖區 tput code cep 將D:\\應用軟件\\vm.exe 拷貝到C:\\vm.exe 四種方法耗費時間對比 4>2>3>1 package Copy; imp

oracle,mysql,sqlserver查詢,附實體類

 最近簡單的對oracle,mysql,sqlserver2005的資料分頁查        (一)、 mysql的分頁查詢       &n

SQLSERVER查詢

1.準備工作 create table pagetest ( id int identity(1,1) not null, col01 int null, col02 nvarchar(50) nul

資料倉庫(十)--java--presto---hive的查詢

我們在SpringMVC框架中使用那個presto查詢hive的資料做展示時,發現在table裡分頁是個不可避免的話題。 建議去掉count 但是尷尬的是 對於海量資料 count的效率是很低的,因為在不加條件的情況下基本上要掃描全表。 count操作效能

java中如何實現模糊查詢

分析: 要想將兩部分功能進行合併,只在兩部分獨立功能上進行些改變即可, 1.首先查詢所有記錄數searchTotalSize ()方法的sql語句要進行改變 2.模糊分頁查詢的方法要注意語句的合併寫法 步驟 1.提供一個PageUtils類,其中包含四

greendao實現本地查詢和模糊查詢

public static int PageSize = 15; //分頁載入 //無網路本地 QueryBuilder<VisitorModel> builder = My

mybatis sqlserver 查詢報錯:'@P0' 附近有語法錯誤

錯誤的sql <select id="searchEcoInfoPaged" resultMap="cm"> select TOP #{rows} * from eco_info where ID in ( SELECT to

Hibernate如何使用HQL語句實現資料查詢

實現資料分頁查詢 使用Query介面的 setFirstResult (int firstResult) 方法 和 setMaxResult (int maxResult) 方法實現 setFirstResult (int firstResult) 方法 :設定返回

的幾方式(邏輯和物理

/** *//** * TestPageResultSetDAO.java * * Copyright 2008. All Rights Reserved. */package com.cosmow.pageresultset.dao;import java.sql.Connection;import jav

Layui+Springboot+Mybatis+Pagehelper實現條件查詢

分頁查詢是Web專案中非常重要的一項,Mybatis對於條件分頁查詢有其天然優勢,動態sql的靈活運用使得sql語句變得簡潔,在本文中,使用Pagehelper分頁外掛並結合Mybatis逆向出的實體進行條件查詢。 首先,匯入Pagehelper依賴

方式實現輪播圖

* { margin:0; padding:0; } ul { list-style:none; } .loop{ pos

高效的SQLSERVER查詢(推薦)

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sys_Page_v2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[sy

Kotlin實戰案例:帶你實現RecyclerView查詢功能(仿照主流電商APP,可切換列表和網格效果)

隨著Kotlin的推廣,一些國內公司的安卓專案開發,已經從Java完全切成Kotlin了。雖然Kotlin在各類程式語言中的排名比較靠後(據TIOBE釋出了 19 年 8 月份的程式語言排行榜,Kotlin竟然排名45位),但是作為安卓開發者,掌握該語言,卻已是大勢所趨了。 Kotlin的基礎用法,整

使用redis的zset實現高效查詢(附完整程式碼)

一、需求 移動端系統裡有使用者和文章,文章可設定許可權對部分使用者開放。現要實現的功能是,使用者瀏覽自己能看的最新文章,並可以上滑分頁檢視。   二、資料庫表設計  涉及到的資料庫表有:使用者表TbUser、文章表TbArticle、使用者可見文章表TbUserArticle。其中,TbU

SQLserver方式

第一種:ROW_NUMBER() OVER()方式 select * from (     select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels   ) as b where RowI

SQL查詢的幾方式

但是 order 結果 htm sql分頁 sele esc 註意 介紹 https://www.cnblogs.com/lxhbky/p/5962393.html 需求:查詢表dbo.Message,每頁10條,查詢第2頁 1:TOP() SELECT TOP(2

Lucene之查詢的三方式-yellowcong

分頁查詢有三種,一種是直接查詢出這頁及這頁以後的資料,第二種,查詢這頁以前的最後一條資料,然後再查詢這頁之後的資料,這種方式還不如第一種方法快,第三種,是根據一個id來進行分頁,這種方式適合不變更的資料 方法1 思路是將所有的查詢取來,然後取自己當前

SQLSERVER 儲存過程實現查詢 C#後臺獲取查詢結果集

一、為什麼要用分頁查詢         在列表查詢時由於資料量非常多,一次性查出來非常慢,也不能一次顯示給客戶端,特別是在使用ExtJS的GridPanel時候,顯示資料量達到200條時對效能影響難以容忍,所以需要考慮將資料分批次查詢出來,每頁顯示一定量的資料,這就是資料要