Java/DB2 首先获取 :n ROWS with custom parameter

标签 java sql db2 fetch spring-jdbc

所以这就是我们要查看的内容,我希望能够将参数传递到我的 fetch 子句中,以便我可以使用自定义 FETCH 数量进行查询。

根据我在其他 SO 中的阅读,遗憾的是,这不能通过 DB2 数据库获得。但是,我看到的答案不是很好,所以我根据我的具体情况提出问题。

我尝试过的其他可行的选项:

  • 连接我的字符串语句以创建我的自定义查询。
  • 不使用 FETCH,而是使用 WHERE col_1 BETWEEN value1 AND value2
  • 正如@bhamby 所评论的,您还可以通过在 WHERE 子句中使用 > 和 < 来替换 BETWEEN stmt

给你一个我正在寻找的基本示例(顺便说一句,我正在使用带有命名参数的 Spring JDBC)

private static final String SQL_FETCH_NEXT = ""
    + "SELECT * " 
    + "FROM ( SELECT "
    + "     (ROW_NUMBER() OVER(ORDER BY ID, AGE)) AS RUNNING_NO, ID, NAME, AGE "
    + "         FROM DATABASE1.TABLE1 PERSON "
    + "     ) AS TABLE_ONE "
    + "WHERE TABLE_ONE.RUNNING_NO > :rowNumber "
    + "ORDER BY TABLE_ONE.RUNNING_NO "
    + "FETCH FIRST :fetchCount ROWS ONLY ";

因此,根据我上面的查询(由于 :fetchCount 而不起作用),我如何才能获得 FETCH 数量的自定义参数(或下降替代)?

最佳答案

您几乎已经拥有所需的所有部分,因为您已经在使用 ROW_NUMBER()。你为什么不试试这个:

SELECT *
FROM (
    SELECT
         ROW_NUMBER() OVER(ORDER BY ID, AGE) AS RUNNING_NO
        ,ID
        ,NAME
        ,AGE
    FROM DATABASE1.TABLE1 PERSON
) AS TABLE_ONE
WHERE TABLE_ONE.RUNNING_NO  > :rowNumber
  AND TABLE_ONE.RUNNING_NO <= :rowNumber + :fetchCount
ORDER BY TABLE_ONE.RUNNING_NO

关于Java/DB2 首先获取 :n ROWS with custom parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028287/

相关文章:

sql - 我可以添加一个列,该列的值是从连接表中计算出来的吗?

SQL:从表中选择一行,其中包含该列的下一个值的附加列

java - db2 - 查询结果到新表

sql - 我们应该为主键使用序列还是身份?

java - 如何使用 Xpath 在 XML 树的节点后检索节点?

java - LDAP 多重或语法

java - 如何在java中准备SOAP请求并调用Web服务

mysql - SQL 选择没有特定标签的帖子

c# - 如果在 DB2 中超过分配的时间,则终止 SQL 查询执行

java - 当 hashmap 值是多个属性 java 8 的对象列表时如何排序