Connect with Db2, open source, and other data experts to gain value from your data, share insights, and solve problems.
Posted by: Serge Rielau
DB2 has had the FETCH FIRST n ROWS (FFnR) clause for many years.
CREATE TABLE emp(name VARCHAR(10), salary INTEGER);INSERT INTO emp VALUES ('Joe' , 20000), ('Martin', 25000), ('Murphy', 30000), ('Sophie', 18000), ('Brett' , 22000), ('Joel' , 31000);
SELECT * FROM emp FETCH FIRST 3 ROWS ONLY;NAME SALARY---------- -----------Joe 20000Martin 25000Murphy 30000 3 record(s) selected.
SELECT name, salary FROM (SELECT ROW_NUMBER() OVER(ORDER BY salary) AS rn, emp.* FROM emp) WHERE rn BETWEEN 3 AND 5;NAME SALARY---------- -----------Brett 22000Martin 25000Murphy 30000 3 record(s) selected.
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2set DB2_COMPATIBILITY_VECTOR=1
db2stopdb2start
SELECT * FROM emp WHERE ROWNUM BETWEEN 3 AND 5 ORDER BY salary;NAME SALARY---------- -----------Brett 22000Martin 25000Murphy 30000 3 record(s) selected.
DB2_COMPATIBILITY_VECTOR=MYS
DB2_COMPATIBILITY_VECTOR=4000
SELECT * FROM emp ORDER BY salary LIMIT 3 OFFSET 2;NAME SALARY---------- -----------Brett 22000Martin 25000Murphy 30000 3 record(s) selected.
SELECT * FROM emp ORDER BY salary LIMIT 2, 3;NAME SALARY---------- -----------Brett 22000Martin 25000Murphy 30000 3 record(s) selected.