zoukankan      html  css  js  c++  java
  • 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而是男和女。

  • 相关阅读:
    hdu 2586(最近公共祖先LCA)
    hdu 3394(点双连通)
    hdu 4005(边双连通)
    hdu 2460(tarjan求边双连通分量+LCA)
    【转载】8天学通MongoDB——第四天 索引操作
    【转载】8天学通MongoDB——第三天 细说高级操作
    [转载]MongoDB开发学习 经典入门
    【原创】jQuery 仿百度输入标签插件
    ★《唐琅探案》后记【2】
    ★《唐琅探案》后记【1】
  • 原文地址:https://www.cnblogs.com/jiaxuekai/p/4044153.html
Copyright © 2011-2022 走看看