SQLServer的一种分页写法

最近在做sqlServer的分页写法,参考了很多方法。下面是我总结的一种分页方法,用了with,top和row_number()函数

下面是我写的分页sql语句:

1:with query as (select top 100 percent *,row_number() over(order by ID) as rownum)
from tablename)select * from query where rownum between 10 and 100;
2:with query as (select  *,row_number() over(order by ID) as rownum)
from tablename)select * from query where rownum > 10 and rownum <100;

with的用法和相关语法内容请参考相关资料,再次不叙述。

1)、在上面两条sql语句中query是自定义的表名,可以任意写;

2)、row_number()函数是建立一个类似与oracle的rownum列,但只支持2005或更高的版本;除此之row_number()后面必须跟上over(),在over后面的括号中还得写上order by ,而ID是你所查询的表的某一列,最好用主键。在此我将row_number()这个重新命名为rownum;

3)、在as后面的括号内用了一条sql语句,里面可以用top关键字做相关的分页也可以不用,在第一句sql语句中的top后面写上了100 percent,这个可以不写如第二条sql语句一样,同时这里也可以写上具体的数字。其实这里就是top关键字的用法。因为我们已经将查出来的数据放到query表中,其中有一列为rownum,是唯一的。

4)、括号后面的sql语句是表示:从query表中查询数据,并可以附上条件,查出我们需要的范围。这里可以用between and,或者直接用rownum大于和小于一个数值。

5)、select top 100 percent *,row_number() over(order by ID) as rownum和select  *,row_number() over(order by ID) as rownum是上面的sql语句的子句。sql语句先运行这子句再运行外面的sql语句。

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...