• 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而是男和女。

  • 相关阅读:
    解决response在controller返回乱码的解决方式
    Injection of autowired dependencies failed;错误解决
    sql mybatis 使用concat乱码
    【算法基础】欧几里得gcd求最大公约数
    sql视图和表的区别
    在idea下创建maven
    Arrays.sort()自定义排序
    数组
    java 遍历数组
    抽象与接口
  • 原文地址:https://www.cnblogs.com/jiaxuekai/p/4044153.html
Copyright © 2020-2023  润新知