sql脚本分页查询

public List<Article> AllArticlesList(int pageNumber)
        {
            string sql = "select *from ( select *,ROW_NUMBER() OVER (ORDER BY Id desc) AS row_num from Article) as at where row_num BETWEEN @pageFirst AND @pageEnd";
            SqlParameter[] ps =
            {
                new SqlParameter("@pageFirst",(pageNumber-1)*5+1),//页码数
                new SqlParameter("@pageEnd",pageNumber*5)//页面显示数据条数
            };
            DataTable dt = SqlHelper.ExcuteDataTable(sql,ps);
            List<Article> list = new List<Article>();
            if (dt.Rows.Count > 0)
            {
                Ergodic(dt, list);
                return list;
            }
            return null;
        }

这个查询是一个SQL语句,它的功能是选择特定的数据行。具体来说,它首先为每个Article表中的记录分配一个按Id字段降序排列的行号,然后选择行号在指定范围内的记录。让我们详细解析一下这个查询:

  • ROW_NUMBER() OVER (ORDER BY Id desc) AS row_num:这部分的功能是为Article表中的每个记录分配一个行号。行号的分配依据是Id字段的降序(即,Id值最大的记录得到行号1,Id值次大的得到行号2,以此类推)。这个行号被命名为row_num
  • select *,ROW_NUMBER() OVER (ORDER BY Id desc) AS row_num from Article:这部分的功能是选择Article表中的所有字段,并为这些记录添加一个名为row_num的新字段,该字段表示这些记录的行号。
  • select *from ( select *,ROW_NUMBER() OVER (ORDER BY Id desc) AS row_num from Article) as at:这部分是一个子查询。它首先执行上述的记录选择和行号分配,然后将结果作为一个新的表(这里被命名为at)返回。
  • where row_num BETWEEN @pageFirst AND @pageEnd:这部分是一个过滤条件,它只选择行号在@pageFirst@pageEnd之间的记录。通常,@pageFirst@pageEnd是用来表示页面范围的参数,例如当你想获取第2页到第5页的数据时,@pageFirst可以是2,@pageEnd可以是5。

总的来说,这个查询的功能是返回在指定页面范围内的Article表中的记录。每个记录除了其原有的字段外,还包含一个表示行号的字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值