SELECT: LIMIT¶
说明¶
限制结果集的范围
参数¶
count
表示至多返回count行。
ALL
返回offset之后的所有行。
offset
表示在开始返回第一行之前要忽略的行数。
注解
LIMIT子句用于对返回结果的范围进行限制,一个完整的LIMIT子句形如LIMIT count OFFSET offset,其含义为返回查询结果中从offset行开始之后的count个行(或count为关键字ALL,则返回之后的所有行)。OFFSET offset部分是可选的,若不指定,则返回结果集中的前count行。
LIMIT子句通常与ORDER BY子句联用,因为不使用ORDER BY子句,SQL是不保证结果的顺序的。若不使用ORDER BY子句对结果进行排序,在不同的时刻运行同一查询,你有可能会发现结果的顺序变了。
参数count、offset可以是普通非负数常量,也可以是带括号的合法的复杂表达式,表达式结果值必须为非负数。如果count、offset的值为负数,或者它们的表达式结果值为负数,神通数据库会提示相应的错误信息。
LIMIT、OFFSET子句不能够与TOP、TOP PERCENT子句同时使用,唯一特例是不带PERCENT的TOP子句可以和OFFSET一起使用,此时其含义为返回查询结果中从offset行开始之后的前top行数据。
示例¶
示例1: 限定返回结果集行数
-- 清理环境
DROP TABLE tab1 CASCADE;
-- 创建表并插入数据
CREATE TABLE tab1 (a INT, b INT, c INT);
INSERT INTO tab1 VALUES(1, 10, 900);
INSERT INTO tab1 VALUES(2, 20, 500);
INSERT INTO tab1 VALUES(2, NULL, 200);
INSERT INTO tab1 VALUES(3, 30, 1000);
SELECT * FROM tab1 ORDER BY a, b, c;
A(int) |B(int) |C(int) |
------------------------------------
1 |10 |900 |
------------------------------------
2 |20 |500 |
------------------------------------
2 |null |200 |
------------------------------------
3 |30 |1000 |
总数目:4
-- 借助 LIMIT 取得最大值
SELECT a FROM tab1 ORDER BY a DESC LIMIT 1;
A(int) |
------------
3 |
总数目:1
-- 借助 LIMIT 、 OFFSET 取得第二大值
SELECT a FROM tab1 ORDER BY a DESC LIMIT 1 OFFSET 1;
A(int) |
------------
2 |
总数目:1
-- 删除表
DROP TABLE tab1;