查询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条