sql - DB2使用LIMIT和OFFSET

标签 sql db2 ibm-midrange sql-limit

我正在开发Java Web服务,当从IBM中型机(AS400)上的DB2数据库中获取大数据集时,允许分页。

例如;如果数据集中有10000条记录,我想一次以1000个块的形式获取它们。

我发现此article解释了我可以使用LIMIT和OFFSET。但是我需要将DB2_COMPATIBILITY_VECTOR变量设置为MYS

现在,我一直在谷歌搜索,看到您可以使用db2set设置此变量。但是我无法找出在哪里键入此命令?

我正在Windows机器上进行开发,并且已经安装了iSeries,并且可以通过iSeries 5250模拟器访问IBM Mid Range Machine。

我知道这一定是一个真正的菜鸟问题,但是如何将DB2_COMPATIBILITY_VECTOR变量更改为MYS呢?

最佳答案

DB2 for Linux Unix Windows(LUW)和DB2 for iSeries是不同的产品。可能,DB2 for iSeries不支持DB2_COMPATIBILITY_VECTOR。我无法在“iSeries信息中心”中找到它。

可以使用FETCH FIRST 10 ROWS ONLY子句代替LIMIT。

代替LIMIT和OFFSET,您应该可以将ROW_NUMBER olap function与subselect一起使用。像这样的东西:

 SELECT emp.EMPNO, emp.SALARY
 FROM (

     SELECT EMPNO, SALARY, 
            ROW_NUMBER() OVER(ORDER BY SALARY DESC) as row_number
     FROM EMPLOYEE

 ) emp
 WHERE emp.row_number > 10
 AND emp.row_number <= 20

关于sql - DB2使用LIMIT和OFFSET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21256121/

相关文章:

mysql - 如何合并这两个子查询?

sql - rails 3 : Is there a `AR#or_where` ?

DB2 比较具有非常大的数字的数据

sql - 如何在 DB2 中使用嵌套结构化类型 (UDT)?

java - Play Framework 和 DB2

java - 将 iSeries JDBC 连接到 Microsoft Azure SQL Server

sql - 过滤具有一对多关系的两个表之间的数据

c# - SqlCommand SQL 语句被执行两次

sql - RPG 编程中不允许使用 null 值吗?

java - 通过 JT400 的 JDBC 适用于本地 Apache Tomcat 8 安装,但在服务器上运行的 Apache Tomcat 8 上失败