SQL Server 分頁查詢語句

2021-08-19 08:47:59 字數 2252 閱讀 5800

create database xuhanglove;

gouse xuhanglove;

gocreate table product(

pid int primary key identity(1,1),

pname varchar(255) not null unique,

price float ,

pdate date,

);select * from product;

-- 修改表字段型別 alter table [表名] alter column [列名] [列型別]

alter table product alter column price float;

--修改表字段的

-- alter table product alter column pid type identity(1,1);

insert into product values('襯衫',32.0,'2018-04-25');

insert into product values('褲子',60.5,'2018-04-25');

insert into product values('帽子',8.0,'2018-04-25');

insert into product values('鞋子',45.6,'2018-04-25');

insert into product values('襪子',10.0,'2018-04-25');

insert into product values('內衣',25.0,'2018-04-25');

-- sql server 分頁查詢

--插入資料

declare @i int

set @i = 1

while (@i<10000)

begin

insert into product values ('aaa'+cast(@i as varchar),@i,'2018-04-25')

set @i+=1;

end;

-- 方法一:order by 分頁sql,下面例子是每頁10條,取第31-40條資料。

select top (40-31+1) * from product where pid in (select top 40 pid from product order by pid ) order by pid desc;

-- 方法二:not in/top

select top 10 * from product where pid not in (select top 30 pid from product order by pid);

-- 方法三:not exists

select top 10 * from product where not exists (select 1 from (select top 30 pid from product order by pid) p1 where p1.pid=product.pid) order by pid;

-- 方法四:max/top

select top 10 * from product where pid > (select max(pid) from (select top 30 pid from product order by pid)p1)order by pid;

-- 方法五:row_number()

select top 10 * from (select row_number() over(order by pid)rn,* from product) p1 where p1.rn>30;

select * from (select row_number() over(order by pid)rn,* from product) p1 where rn>30 and rn <41;

select * from (select row_number() over(order by pid) rn,* from product) p1 where rn between 31 and 40;

--方法六:row_number() 變體,不基於已有字段產生記錄序號,先按條件篩選以及排好序,再在結果集上給一常量列用於產生記錄序號

select * from (select row_number() over(order by pid)rn,* from (select top 40 * from product where 1=1 order by pid ) p1)p2 where rn>30;

sql server分頁查詢語句

sqlserver分頁查詢 查詢10條第一頁資料 10代表一頁多少條 頁數為10 1 1 select top 10 from dbo userinfo where ui fvaruserid not in select top 0 ui fvaruserid from dbo userinfo o...

sqlserver分頁查詢語句效能分析

目的 通過三種不同的分頁查詢語句的寫法來比較其效能。環境 windows server 2003 sp2 sqlserver2008。資料準備 100萬條資料。說明 下列sql語句中 pagesize表明每頁記錄條數 pageindex表示頁碼 table表示表明,id表示table表中的主鍵。方法...

Sql Server分頁語句

分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order by id order by id select top 頁大小 f...