Zhaoxin Guo

Don't lose hope. You never know what tomorrow will bring.

Sqlserver 不同分页写法

第一种 offset  x rows fetch next x rows方式(SQL2012以上的版本才支持:推荐使用,效率最高 )

语法:offset 跳过 rows

   fetch  取 rows only

 

   例:跳过30条,取10条

select * from [CLD].[dbo].[Dim_SalesStructure_Month] order by id offset 30 rows fetch next 10 rows only

 

第二种 row_number()

  先根据id排序再分页

select * from(
    select *,row_number() over(order by id) num from  [CLD].[dbo].[Dim_SalesStructure_Month]) A
    where A.num between 31 and 40

 

第三种 not in

select top 10 * from [CLD].[dbo].[Dim_SalesStructure_Month] where id not in(
    SELECT top 30 ID
        FROM [CLD].[dbo].[Dim_SalesStructure_Month])

 

第四种 not exists

select top 10 * from [CLD].[dbo].[Dim_SalesStructure_Month] a where  not exists(
    select 1 from (SELECT top 30 ID
                        FROM [CLD].[dbo].[Dim_SalesStructure_Month] order by id)a1 where a1.ID=a.ID)

 

第五种 取前30条 id大于top30最大id

select top 10 * from [CLD].[dbo].[Dim_SalesStructure_Month] where id >(
 select max(ID) from  (select top 30 id from [CLD].[dbo].[Dim_SalesStructure_Month]) A)

 

posted @ 2021-06-07 14:32  "郭召欣"  阅读(149)  评论(0编辑  收藏  举报