SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 10 ROWS ONLY;
first_name|last_name|salary |
----------|---------|--------|
Steven |King |24000.00|
Lex |De Haan |17000.00|
Neena |Kochhar |17000.00|
John |Russell |14000.00|
Karen |Partners |13500.00|
Michael |Hartstein|13000.00|
Shelley |Higgins |12008.00|
Nancy |Greenberg|12008.00|
Alberto |Errazuriz|12000.00|
Lisa |Ozer |11500.00|
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
OFFSET 10 ROWS
FETCH FIRST 10 ROWS ONLY;
first_name|last_name|salary |
----------|---------|--------|
Gerald |Cambrault|11000.00|
Den |Raphaely |11000.00|
Ellen |Abel |11000.00|
Clara |Vishney |10500.00|
Eleni |Zlotkey |10500.00|
Harrison |Bloom |10000.00|
Peter |Tucker |10000.00|
Janette |King |10000.00|
Hermann |Baer |10000.00|
Tayler |Fox | 9600.00|
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 10;
SELECT column1, column2, ...
FROM table
[WHERE conditions]
[ORDER BY column1 ASC, column2 DESC, ...]
[OFFSET m {ROW | ROWS}]
[FETCH { FIRST | NEXT } [ num_rows] { ROW | ROWS } ONLY];
SELECT column1, column2, ...
FROM table
[WHERE conditions]
[ORDER BY column1 ASC, column2 DESC, ...]
[LIMIT { num_rows| ALL } ]
[OFFSET m {ROW | ROWS}];
FETCH是标准 SQL 语法,LIMIT是 PostgreSQL 扩展语法。
如果没有指定ORDER BY,限定数量之前并没有进行排序,是一个随意的结果。
OFFSET偏移量必须为 0 或者正整数。默认为 0,NULL 等价于 0。
FETCH限定的数量必须为 0 或者正整数。默认为 1,NULL 等价于不限定数量。
LIMIT限定的数量必须为 0 或者正整数。没有默认值,ALL 或者 NULL 等价于不限定数量。
随着OFFSET的增加,查询的性能会越来越差。因为服务器需要计算更多的偏移量,即使这些数据不需要被返回前端。
原文作者:SQL编程思想;如有侵权,请联系管理员删除。