row_number()函数--查询第20条到第30条数据-分页查询

来源:互联网 发布:拉萨公务员待遇知乎 编辑:程序博客网 时间:2024/06/06 07:06

 WHAT?

             让高效的性能成为我们的亮点。

          row_number() over(oder by name),from tablename,用此函数,可以获得添加在我要查询的结果集的增加列中的行序号。

HOW?

        需求1:

        从下表中,找出最先报名的第2位--第7位用户的信息。

       

        解读:就是先排序,后选出2-7条的数据。

        

       代码:

      

with cte as( select number=row_number() over(order by Chr_CardID),* from T_Card)select * from cte where number between 2 and  7
      

      pay attention,please~

     1、between and 会拿到第几行的数据,并不能筛选出并列的数值。

     2、over()里面的分组及排序的执行晚与where group by  order by 的执行。

     3、oder by 的意思是告诉这个函数,我要以什么顺序去添加这行号。



     需求2:

    下面表:要选出固定用户(一般用户)的2-4名。

    

    解读:

    先分组,再排序,最后选出。

   

    代码:

    

with cte as( select number=row_number() over(partition by Chr_Type order by Chr_CardID),* from T_Card)select * from cte where number between 2 and  4

    效果:

    

     

    pay attention, please~

   1、partition by 的意思是分组~按照你想要的效果分组排序。

   2、我选的数据是从2-4,固定用户和一般用户的第一名都没有选出来,分组的选择是同步的。


小结:

      总结多了,写的也就多了,这是一个互相促进的过程。

0 0
原创粉丝点击