• 章节:19
  • 访问:1296
  • 时长:00:14:03
  • 日期:2019-06-02 12:41

查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:

两种方法 一种使用rownumber order by

select * from
(
 SELECT [ID]
      ,[Content]
      ,[StartTime]
      ,[Status]
      , ROW_NUMBER() over (order by id desc) as num
  FROM [Demo].[dbo].[Schedule] t
) as tab
where tab.num between 1 and 3

另外使用 top的方式

首先 分析一下。要去31到40条

那么 意思去 按照ID排序后 要去掉 底部的30条。然后取底部的10条。我们这里把上面的叫”底“

升序排序后查找出排序后 底部的30条中ID最大的。然后过滤这部分ID.然后再

SELECT TOP 10 * FROM [dbo].[Schedule] 
 WHERE ID >(
 --这30条最大ID
 Select max(ID) as maxid from (
--升序排列后顶部30条
SELECT top 2 * FROM [dbo].[Schedule] t order by ID asc
 ) as t
 )
 order by ID asc
select top 5 * from [Demo].[dbo].[student] where stu_id >
  (
  select MAX(stu_id) as maxid
  from (
  SELECT top 5 -- 这里的根据页码来计算 第一页是0 第二页5 第三页10
  [stu_id]
  ,[stu_name]
  ,[stu_gender]
  ,[stu_age]
  FROM [Demo].[dbo].[student] order by stu_id asc
  ) as t
  )
  order by stu_id asc


-- 1 排序
-- 2 查找前面的记录
-- 3 查找前面的最大的id
-- 4 查找大于这个id的记录
-- 5 再次升序排序后取top5条