15

我知道在 DB2(使用 9.7 版)中,我可以使用以下查询选择表的前 10 行:

SELECT * 
FROM myTable
ORDER BY id
FETCH FIRST 10 ROWS ONLY

但是,例如,我怎样才能获得第 11 到 20 行?我无法使用主键或 ID 来帮助我...

提前致谢!

4

2 回答 2

16

这是一个示例查询,它将从包含州名称、缩写等的表中获取行。

SELECT *
FROM (
   SELECT stabr, stname, ROW_NUMBER() OVER(ORDER BY stname) AS rownumber
   FROM states
   WHERE stcnab = 'US'
) AS xxx
WHERE rownumber BETWEEN 11 AND 20 ORDER BY stname

编辑:ORDER BY有必要保证查询执行之间的行编号是一致的。

于 2013-07-25T15:15:16.907 回答
1

您还可以使用 MYSQL 兼容性。您只需要激活 MYS 的矢量兼容性,然后在查询中使用 Limit 和 Offset。

db2set DB2_COMPATIBILITY_VECTOR=MYS
db2stop
db2start
于 2013-07-25T15:38:11.520 回答