
# LIMIT \| FETCH FIRST
LIMIT和FETCH FIRST都可以限制结果集中的行数。LIMIT和OFFSET可以配合使用进行分页查询。
#### LIMIT
LIMIT { count \| ALL }
下面的查询限制返回的行数为5：
```
SELECT * FROM fruit LIMIT 5;
```
LIMIT ALL与省略LIMIT的作用一样。
#### FETCH FIRST
FETCH { FIRST \| NEXT } \[ count \] { ROW \| ROWS } { ONLY \| WITH TIES
FETCH FIRST支持FIRST或NEXT关键字以及ROW或ROWS关键字。这些关键字等效，不影响query执行。
- 如果FETCH FIRST未指定数量，默认为1：
  ```
  SELECT orderdate FROM orders FETCH FIRST ROW ONLY;
    orderdate   
  --------------
   2020-11-11 
  SELECT *  FROM new_orders FETCH FIRST 2 ROW ONLY;
     orderkey   | orderstatus | totalprice |  orderdate   
  ---|---|---|--------------
   202011181113 | online      |     9527.0 | 2020-11-11 
   202011181114 | online      |      666.0 | 2020-11-11 
  (2 rows)
  ```
  
- 如果使用了OFFSET，则LIMIT或FETCH FIRST会在OFFSET之后应用于结果集：
  ```
  SELECT * FROM (VALUES 5, 2, 4, 1, 3) t(x) ORDER BY x OFFSET 2  FETCH FIRST ROW ONLY;
   x 
  ---
   3 
  (1 row)
  ```
  
- 对于FETCH FIRST子句，参数ONLY或WITH TIES控制结果集中包含哪些行。 如果指定了ONLY参数，则结果集将限制为包含参数数量的前若干行。
  如果指定了WITH TIES参数，则要求必须带ORDER BY子句。其结果集中包含符合条件的前若干行基本结果集以及额外的行。这些额外的返回行与基本结果集中最后一行的ORDER BY的参数一样：
  ```
  CREATE TABLE nation (name varchar,  regionkey integer);
  insert into nation values ('ETHIOPIA',0),('MOROCCO',0),('ETHIOPIA',2),('KENYA',2),('ALGERIA',0),('MOZAMBIQUE',0);
  --返回regionkey与第一条相同的所有记录。
  SELECT name, regionkey FROM nation ORDER BY regionkey FETCH FIRST ROW WITH TIES;
      name    | regionkey 
  ---|-----------
   ALGERIA    |         0 
   ETHIOPIA   |         0 
   MOZAMBIQUE |         0 
   MOROCCO    |         0 
  (4 rows)
  ```
  
 
