如何在 DB2 for iSeries 中执行LIMIT
?
我有一个包含超过 50,000 条记录的表,我想返回 0 到 10,000 条记录,以及 10,000 到 20,000 条记录。
我知道在 SQL 中,您可以在查询 0 到 10,000 的查询末尾写入 LIMIT 0,10000
,在查询 10000 的查询末尾写入 LIMIT 10000,10000
至 20,000
那么,这在 DB2 中是如何完成的呢?代码和语法是什么? (赞赏完整的查询示例)
最佳答案
使用仅获取第一个[n]行
:
SELECT LASTNAME, FIRSTNAME, EMPNO, SALARY
FROM EMP
ORDER BY SALARY DESC
FETCH FIRST 20 ROWS ONLY;
要获取范围,您必须使用 ROW_NUMBER()
(自 v5r4 起)并在 WHERE
子句中使用它:(从此处窃取:http://www.justskins.com/forums/db2-select-how-to-123209.html )
SELECT code, name, address
FROM (
SELECT row_number() OVER ( ORDER BY code ) AS rid, code, name, address
FROM contacts
WHERE name LIKE '%Bob%'
) AS t
WHERE t.rid BETWEEN 20 AND 25;
关于db2 - 相当于 DB2 的 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885193/