Jason on Cloud 2009-11-05 15:41
浏览 275
已采纳

求一个能同时支持derby,DB2,SQLServer三种数据库的数据库分页的方法

求一个能同时支持derby,DB2,SQLServer三种数据库的数据库分页的方法
[b]问题补充:[/b]
不使用持久层框架

  • 写回答

5条回答 默认 最新

  • lijiepeng 2009-11-06 18:01
    关注

    补充:
    上面的分页sql语句是sqlserver的.
    下面是其它数据库的,比照的写就OK了.
    几种数据库分页获得本页数据的写法!

    oracle:

    code:

    SELECT * FROM
    (
    SELECT A.*, rownum r
    FROM
    (
    SELECT *
    FROM Articles
    ORDER BY PubTime DESC
    ) A
    WHERE rownum <= PageUpperBound
    ) B
    WHERE r > PageLowerBound;


    注释:红色部分为可更换的查询语句PageUpperBound为大树,也就是我们所说的结束的条数目,PageLowerBound为开始的条数目!

    DB2:

    code:

    select * from ( select rownumber() over() as row_next,t.* from (
    SELECT *
    FROM Articles
    ORDER BY PubTime DESC

    ) as t) as temp where row_next between 10 and 30

    注释:红色部分可更换你想要的查询语句10更换为开始的条目30更换为结束的条目数字

    MYSQL:

    code:

    sql + " limit " + spage + "," + perpagenum;


    注释:sql可替换为你想要的查询语句spage为开始的条目数字,perpagenum为开始往后有多少条

    PostgreSQL:

    code:

    sql + " limit " + perpagenum + " OFFSET " + spage


    注释:注意的地方与上面相同

    SQLSERVER

    code:

    分页方案一:(利用Not In和SELECT TOP分页)
    语句形式:
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id))
    ORDER BY ID

    SELECT TOP 页大小 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP 页大小*页数 id
    FROM 表
    ORDER BY id))
    ORDER BY ID


    分页方案二:(利用ID大于多少和SELECT TOP分页)
    语句形式:
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id) AS T))
    ORDER BY ID

    SELECT TOP 页大小 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 页大小*页数 id
    FROM 表
    ORDER BY id) AS T))
    ORDER BY ID

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?