Mssql取得第10到第20条的不连续记录的三种方法
首先选取的ID肯定是不连续的,所以不能用取得10-id-20的记录的方法。
一般在Ajax读取数据时会使用到,动态留言啊,加载文章啊等等。
比如说,按时间加载下10条,那就需要这种方法了,首先加载10条,然后是11到20条,以此类推。
假定我们有一个tbl表,然后需要依次选取按时间date倒序排序的10条数据。
首先想到的是第一种方法。
一、搜索前10条记录,指定不包括前10条。
这条语句是大家基本上能够想到的,基本思路是这样子的,但是效率很低。
语句:
select top 10 * from tbl where id not in (select top 10 id from tbl order by date desc) order by date desc
二、先按时间倒序选取20条,然后在结果中正序选10条。
这种想法就有点机智了,但是由于选出来的结构是正序的,可能需要第三次操作,但是效率比第一种略微高一点。
语句:
select top 10 * from (select top 20 * fromt tbl order by date desc) k order by date
三、通过 row_number() over(order by name)来实现。
这种方法是通过row_number()来实现的,经过对比,这种效率最高,语句最简单。
语句:
select * from (select row_number()over(order by date desc) as rn,* from tbl) k where k.rn between 11 and 20
基本上就是这三种方法,明凯选用的就是第三种方法。
AspPdf下载时提示PDF startxref not found的解决方法 淘宝客主题ZTao美丽说海阔主题粉色多功能主题
[…] Mssql取得第10到第20条的不连续记录的三种方法 […]