documentation/query/sql/limit.md
Specify the number and position of records returned by a SELECT statement.
Other implementations of SQL sometimes use clauses such as OFFSET or ROWNUM.
Our implementation uses LIMIT for both the offset from start and limit.
numberOfRecords is the number of records to return.upperBound and lowerBound is the range of records to return.Here's the exhaustive list of supported combinations of arguments. m and n
are positive numbers, and negative numbers are explicitly labeled -m and -n.
LIMIT n: take the first n recordsLIMIT -n: take the last n recordsLIMIT m, n: skip the first m records, then take up to record number n
(inclusive)
(m, n] number 1 denoting the first recordm > n, implicitly swap the argumentsOFFSET m LIMIT (n-m)LIMIT -m, -n: take the last m records, then drop the last n records from
that
[-m, -n), number -1 denoting the last
recordm < n, implicitly swap themLIMIT m, -n: drop the first m and the last n records. This gives you the
range (m, -n). These arguments will not be swapped.These are additional edge-case variants:
LIMIT n, 0 = LIMIT 0, n = LIMIT n, = LIMIT , n = LIMIT nLIMIT -n, 0 = LIMIT -n, = LIMIT -nExamples use this schema and dataset:
CREATE TABLE tango (id LONG);
INSERT INTO tango VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
SELECT * FROM tango LIMIT 5;
id
----
1
2
3
4
5
SELECT * FROM tango LIMIT -5;
id
----
6
7
8
9
10
SELECT * FROM tango LIMIT 2, 5;
id
----
3
4
5
SELECT * FROM tango LIMIT -5, -3;
id
----
6
7
SELECT * FROM tango LIMIT 2, -1;
id
----
3
4
5
6
7
8
9
SELECT * FROM tango LIMIT 5, 2;
id
----
3
4
5
SELECT * FROM tango LIMIT -3, -5;
id
----
6
7