结果集限定子句
📄字数 1.8K
👁️阅读量 加载中...
一、LIMIT
通过指定返回结果集的行数来控制查询结果的大小。通常与SELECT
语句一起使用,可以显著减少数据库服务器的负载,提高查询性能。
LIMIT
子句的基本语法是在SELECT
语句的末尾添加LIMIT
关键字,后面跟一个或多个参数。参数可以是具体的行数,也可以是一个表示偏移量(OFFSET)的值和一个表示返回行数的值。当前版本LIMIT
最大支持到2147483647,超过报错。
1.1 语法格式
1.2 参数说明
- select_offset_value:
- offset_num:指定结果集第一行数据的偏移量
?
:指定结果集第一行数据的偏移量为此参数占位符传入的值:
param_num:指定结果集第一行数据的偏移量为索引为param_num的参数的值:
param_name:指定结果集第一行数据的偏移量为名称为param_name的参数的值
- select_limit_value:指定最终返回数据条数
- limit_num:指定结果集最大行数
ALL
:指定返回所有数据?
:指定结果集最大行数为此参数占位符传入的值:
param_num:指定结果集最大行数为索引为param_num的参数的值:
param_name:指定结果集最大行数为名称为param_name的参数的值
1.3 示例
创建一个名为tb_limit的表,并插入100条记录:
LIMIT 2
:从tb_limit表中选择前2行记录。LIMIT 2,2
:跳过前2行,然后返回接下来的2行记录。LIMIT 2 OFFSET 2
:同LIMIT 2,2LIMIT 10,1
:跳过前10行,然后返回接下来的1行记录。
sql
-- 创建数据表
SQL> CREATE TABLE tab_limit(id INT, name VARCHAR(20));
Execute successful.
Use time:26 ms.
SQL> BEGIN
FOR i IN 1..100 LOOP
INSERT INTO tab_limit VALUES(i, 'limit');
END LOOP;
END;
/
Execute successful.
Use time:6 ms.
-- 返回指定数据量
SQL> SELECT * FROM tab_limit LIMIT 2;
+----+-------+
| ID | NAME |
+----+-------+
| 1 | limit |
| 2 | limit |
+----+-------+
(2 rows)
Use time:1 ms.
-- 偏移指定条数后返回指定数据量
SQL> SELECT * FROM tab_limit LIMIT 2,2;
+----+-------+
| ID | NAME |
+----+-------+
| 3 | limit |
| 4 | limit |
+----+-------+
(2 rows)
Use time:0 ms.
SQL> SELECT * FROM tab_limit LIMIT 2 OFFSET 2;
+----+-------+
| ID | NAME |
+----+-------+
| 3 | limit |
| 4 | limit |
+----+-------+
(2 rows)
Use time:0 ms.
-- 子查询使用LIMIT
SQL> SELECT * FROM tab_limit WHERE id = (SELECT id FROM tab_limit LIMIT 10,1);
+----+-------+
| ID | NAME |
+----+-------+
| 11 | limit |
+----+-------+
(1 row)
Use time:1 ms.
二、TOP
2.1 功能描述
限制查询结果返回前N行。
2.2 示例
sql
SQL> CREATE TABLE tab_top(id INT,name VARCHAR(20));
Execute successful.
Use time:28 ms.
SQL> INSERT INTO tab_top VALUES(1,'one')(2,'two')(3,'three')(4,'four');
Total 4 records effected.
Use time:1 ms.
SQL> SELECT TOP 2 * FROM tab_top ORDER BY id DESC;
+----+-------+
| ID | NAME |
+----+-------+
| 4 | four |
| 3 | three |
+----+-------+
(2 rows)
Use time:2 ms.
三、DISTINCT
3.1 功能描述
DISTINCT
用于在SELECT查询中去除重复的记录,令结果集中每一行都是唯一的。
3.2 示例
sql
SQL> CREATE TABLE tab_dis(id INT,name VARCHAR(20));
Execute successful.
Use time:28 ms.
SQL> INSERT INTO tab_dis VALUES(1,'one')(1,'two')(3,'three')(4,'four');
Total 4 records effected.
Use time:0 ms.
SQL> SELECT DISTINCT id FROM tab_dis;
+----+
| ID |
+----+
| 1 |
| 3 |
| 4 |
+----+
(3 rows)
Use time:0 ms.