SELECT LIMIT 子句

348 阅读2分钟

SQL SELECT LIMIT 语句

SELECT LIMIT 语句用于从数据库中的一个或多个表中检索记录,并根据一个限制值限制返回的记录数量。

语法结构:

SELECT expressions
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
LIMIT number_rows [ OFFSET offset_value ];

让我们看看如何在 SQL 中使用带有 LIMIT 子句的 SELECT 语句:

SELECT product_id, product_name, price
FROM products
ORDER BY product_id DESC
LIMIT 5.

示例将从 products 表中取出前 5 条记录的 product_id、product_name 和 price,结果根据 product_id 进行降序排序。

offset 关键字允许您偏移 LIMIT 子句返回的第一条记录。例如:

LIMIT 3 OFFSET 1

此 LIMIT 子句将在结果集中返回 3 条记录,偏移量为 1。这意味着 SELECT 语句将跳过通常返回的第一条记录,而是返回第二、第三和第四条记录。

让我们看看如何在 SQL 中使用带有 OFFSET 子句的 SELECT LIMIT 语句。

SELECT contact_id, last_name, first_name
FROM contacts
WHERE website = 'test.com'
ORDER BY contact_id DESC
LIMIT 5 OFFSET 2;

SELECT UP TO,OFFSE

可选条件:

... [UP TO n ROWS]
    [OFFSET o] ...

SELECT 语句或 WITH 语句的查询中,这些可供选择的附加内容使用一个偏移量和最大读取行数来限制结果集。对于主查询和子查询,其语法变化如下:

  • 主查询:如果 INTO 子句被指定为 SELECT 语句的最后一个子句,那么添加的内容必须跟在 INTO 子句的后面。否则,也可以在 SELECT 子句之后或 FROM 子句之后指定它们。这两个条件的顺序是固定的。只有在有 ORDER BY 子句的情况下,才可以使用附加的 OFFSET
  • 条件 UP TO 只能在 ORDER BY 子句之后指定,条件 OFFSET 只能在 UP TO之后指定。

... UP TO n ROWS

条件的 UP TOSELECT 语句的结果集中的行数限制为 nn 期望是一个以转义字符 @ 为前缀的变量,n 必须具有 b、s、i 或 int8 类型。例如:

SELECT *  FROM scustom  
   WHERE custtype = 'B'  
   ORDER BY discount DESCENDING  
   INTO TABLE @DATA(result)  
   UP TO 3 ROWS.

...OFFSET o

附加的 OFFSET 是用来从结果集中只返回计数为o的行之后的行。如果指定了 OFFSET,那么必须使用 ORDER BY 对结果集进行排序。 o 期望一个以转义字符 @ 为前缀的变量,且期望类型为 b、s、i 或 int8 的字面符号,可以代表 i 的取值范围内的所有非负数,例如:

SELECT fldate  
   FROM sflight  
   WHERE carrid = 'LH' AND connid = '400'  
   ORDER BY seatsocc ASCENDING, fldate  
   INTO TABLE @DATA(result)  
   OFFSET 10.