【问题标题】:Creating a pagination with db2使用 db2 创建分页
【发布时间】:2016-03-10 03:02:57
【问题描述】:

我了解到 DB2 不支持 Limit 和 Offset。我还读到您必须使用 ROW_NUMBER() 和子查询才能获得所需的结果。 如果这是一个 SQL 查询:

$sql = "SELECT * FROM ITEMS LIMIT $offset, $rowsperpage";

其中 $offset 是偏移量,$rowsperpage 是我希望在页面上显示的数据库中的行数,这可以等同于 DB2 查询。

【问题讨论】:

    标签: db2


    【解决方案1】:

    嗯,根据您使用的 DB2 平台,您没有阅读完整的故事。 DB2 LUW has support for LIMIT and OFFSET, but you have to turn it on(设置标志后不要忘记重新启动 DB2)。如果您想按照您的要求使用带有 ROW_NUMBER() 的 DB2,您可以编写如下查询:

    SELECT * 
      FROM (SELECT ROW_NUMBER() OVER() AS rn, 
                   items.* 
              FROM items)
      WHERE rn BETWEEN computelowerboundaryhere AND computeupperboundaryhere;
    

    还有一个overview article describing the different ways of doing the LIMIT/OFFSET work in DB2

    【讨论】:

    • 我已经试过开启,也试过Limit Offset,还是不行
    • 另外@data_henrik 我的查询几乎可以工作,但它显示的是所有行号而不是项目名称
    • 您只需要选择所需的列(基于我上面的通用示例),而不是选择所有列 (*)。
    • 我创建了一篇博客文章来展示如何在 DB2 中启用 LIMIT 和 OFFSET blog.4loeser.net/2015/12/limit-and-offset-in-db2-queries.html
    【解决方案2】:

    DB2 for I 从latest technology refresh (7.1 TR11 and 7.2 TR3). 开始也支持 LIMIT 和 OFFSET

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多