Row limiting clause (SELECT)
How to use the right clause to limit the number of rows produced by a
SELECT
statement?
IBM® Informix® SQL
supports the SKIP
and FIRST/LIMIT
keywords to limit the number of
rows of a result set.
For
example:
SELECT SKIP 10 FIRST 20 customer.* FROM customer ... ORDER BY cust_name
It is strongly recommended to use an ORDER BY
clause when limiting the result
set rows.
The above Informix SQL syntax is not portable.
Recent database engines support the row limiting clause syntax defined by the SQL
standard:
SELECT ... OFFSET n ROWS FETCH FIRST m ROWS ONLY
This should be the prefered syntax to be used, if all target database types support this
SELECT
clause.
The ODI database drivers can convert
the Informix SQL
SKIP/FIRST
row limiting clause to a native SQL equivalent, if the
row limiting clause parameters are simple integer literals (the clause is not translated when using
SQL parameters / program variables).Important:
In addition to the
SKIP/FIRST
clause of the projection clause, Informix SQL supports also a
LIMIT
clause after the ORDER BY
clause:SELECT customer.* FROM customer ... ORDER BY cust_name LIMIT 10
This
Informix SQL syntax construction is not converted by the ODI drivers. To benefit from the
conversion, review the code to use the Informix SQL SKIP/FIRST
clause
instead.Database Server Type | Native equivalent | Informix emulation |
---|---|---|
IBM Informix 12+ | SELECT |
Yes, native SQL feature |
Microsoft™ SQL Server 2012+ | SELECT ... ORDER BY ... OFFSET n ROWS |
Emulated, see details |
Oracle® MySQL 5.5-8.0 / MariadDB 10.x | SELECT ... ORDER BY ... LIMIT m |
Emulated, see details |
Oracle Database Server 19c+ | SELECT ... ORDER BY ... |
Emulated, see details |
PostgreSQL 9.4+ | SELECT ... ORDER BY ... |
Emulated, see details |
SAP HANA® 2.0+ | SELECT ... ORDER BY ... LIMIT m |
Emulated, see details |
SQLite 3.8+ | SELECT ... ORDER BY ... LIMIT m |
Emulated, see details |
Dameng® 8+ | SELECT ... ORDER BY ... |
Emulated, see details |