我知道在 DB2(使用 9.7 版)中,我可以使用以下查询选择表的前 10 行:
SELECT *
FROM myTable
ORDER BY id
FETCH FIRST 10 ROWS ONLY
但是,例如,我怎样才能获得第 11 到 20 行?我无法使用主键或 ID 来帮助我...
提前致谢!
这是一个示例查询,它将从包含州名称、缩写等的表中获取行。
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
有必要保证查询执行之间的行编号是一致的。
您还可以使用 MYSQL 兼容性。您只需要激活 MYS 的矢量兼容性,然后在查询中使用 Limit 和 Offset。
db2set DB2_COMPATIBILITY_VECTOR=MYS
db2stop
db2start