• sql中对查询出来的数据进行分页


    当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页。

    sql代码:

    DECLARE @pageindex INT; --页码
    DECLARE @pagesize INT;  --每页显示的记录数量
    SET @pageindex=;       
    SET @pagesize=5;
    SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY UserName) AS rownumber,* FROM dbo.T_User) u WHERE u.rownumber>(@pageindex-1)*@pagesize AND 
    u.rownumber<=@pageindex*@pagesize
    DECLARE @pageindex INT; --页码
    DECLARE @pagesize INT;  --每页显示的记录数量
    SET @pageindex=2;       
    SET @pagesize=5;
    
    SELECT  TOP @pagesize * FROM(SELECT ROW_NUMBER() over(order by id) AS rownumber,* FROM tables) 
    
    tables1 WHERE rownumber > @pagesize*(@pageindex-1)

    在sql中变量定义用关键字DECLARE(注意在定义时一定要给变量加上数据类型,如DECLARE @pageindex INT;),赋值语句为set(如SET @pageindex=1; )

    在查询语句中使用ROW_NUMBER()函数生成一个排序列,rownumber函数必须配合ORDER BY分组函数如(ROW_NUMBER() OVER(ORDER BY UserName) AS rownumber)这是一个字段。

    sql代码查询结果如下:

    以上是在第二页,每页5条。

    在查询结果中多了一列,rownumber的排序列,从1开始到数据结束。可以利用此字段进行分页,这样问题就成了我们需要找从第几条开始到第几条的数据了。

    这上面的表中加入条件查询,问题就解决了。

    WHERE u.rownumber>(@pageindex-1)*@pagesize AND
    u.rownumber<=@pageindex*@pagesize

    假如每页10条数据,那么查询的时候我们就可以让rownumber>0并且<=10这样就查询到了当前第一页的数据,当我们查询第二页的时候也是就rownumber>11 and <=20

    这就是第二页了。

    附加:在数据库中存储性别的时候一般是存储1,2。而并不是存入男女。查询出来的结果可以用case进行查询结果的值修改。

    例如:SELECT (CASE Gender WHEN '1' THEN '男' WHEN '2' THEN '女' end)AS 性别 FROM dbo.T_User

    这样查询出来的结果不再是1和2而是男和女。

  • 相关阅读:
    0302思考并回答一些问题
    1231 实验四 递归下降语法分析程序设计
    1118 实验三 有限自动机的构造与识别
    1112对他人的博客评论及建议
    1029c语言文法
    1022词法分析实验总结
    词法分析
    0330 复利计算——单元测试
    0321 读《构建之法》第一,二,三章有感
    0316 复利计算总结(0330 更新)
  • 原文地址:https://www.cnblogs.com/jiaxuekai/p/4044153.html
Copyright © 2020-2023  润新知