none
能否生成一个序号列并且和查询结果拼接 RRS feed

  • 问题

  • 有一个表有上万行数据,我以若干条为一分页,形成分页搜索结果,现在的问题是要在返回的结果集的最前端添加一列,这一列的值是搜索结果的序号,从1开始往后排,比如第三页第10行,他就是30,如何实现这一效果?
    2012年11月11日 15:29

答案

  • 知道 rownumber (row_number()函数)吧,这个可以做到你要的效果。

    2005+支持。


    family as water

    2012年11月12日 0:57
  • 依照你的描述我做了下列的代码来模拟,不晓得这样是不是你要的结果,请自行改成符合你的样子,有兴趣不妨参考看看。

    use Northwind
    go
    
    declare @PageIndex int = 2
    declare @PageSize tinyint = 10
    
    select *
    from 
    (
     select ROW_NUMBER() OVER (ORDER BY CustomerID) SN,CustomerID,CompanyName
     from Customers
    ) t
    where sn between case when @PageIndex = 0 then @PageIndex else @PageIndex * @PageSize end 
    	and (@PageIndex + 1) * @PageSize
    


    以上說明若有錯誤請指教,謝謝。
    歡迎參觀我的BLOG - 積沙成塔

    2012年11月12日 2:07

全部回复

  • 知道 rownumber (row_number()函数)吧,这个可以做到你要的效果。

    2005+支持。


    family as water

    2012年11月12日 0:57
  • 依照你的描述我做了下列的代码来模拟,不晓得这样是不是你要的结果,请自行改成符合你的样子,有兴趣不妨参考看看。

    use Northwind
    go
    
    declare @PageIndex int = 2
    declare @PageSize tinyint = 10
    
    select *
    from 
    (
     select ROW_NUMBER() OVER (ORDER BY CustomerID) SN,CustomerID,CompanyName
     from Customers
    ) t
    where sn between case when @PageIndex = 0 then @PageIndex else @PageIndex * @PageSize end 
    	and (@PageIndex + 1) * @PageSize
    


    以上說明若有錯誤請指教,謝謝。
    歡迎參觀我的BLOG - 積沙成塔

    2012年11月12日 2:07
  • 关注一下

    给我写信: QQ我:点击这里给我发消息

    2012年11月12日 12:04