Sql 简明教程
SQL - TOP Clause
The SQL TOP Clause
在从 SQL 表中检索数据时,SQL TOP clause 用于限制 SQL server 中 SELECT 查询返回的行数。此外,我们还可以在 UPDATE 和 DELETE 语句中使用它来限制(限制)结果记录。
例如,如果你的数据库表中存储了大量数据,并且你只想对前 N 行执行操作,则可以在你的 SQL server 查询中使用 TOP 子句。
Syntax
SQL TOP 子句的基本语法如下 −
SELECT TOP value column_name(s)
FROM table_name
WHERE [condition]
其中, value 是要返回的顶层行数/百分比。
Example
为了更好地理解它,让我们考虑一下 CUSTOMERS 表,其中包含客户的个人详细信息,包括他们的姓名、年龄、地址和工资等,如下所示:
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
现在,使用如下所示的 INSERT 语句向此表中插入值:
INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );
该表将按如下方式创建:
ID |
NAME |
AGE |
ADDRESS |
SALARY |
1 |
Ramesh |
32 |
Ahmedabad |
2000.00 |
2 |
Khilan |
25 |
Delhi |
1500.00 |
3 |
Kaushik |
23 |
Kota |
2000.00 |
4 |
Chaitali |
25 |
Mumbai |
6500.00 |
5 |
Hardik |
27 |
Bhopal |
8500.00 |
6 |
Komal |
22 |
Hyderabad |
4500.00 |
7 |
Muffy |
24 |
Indore |
10000.00 |
现在,我们使用 TOP 子句来获取 CUSTOMERS 表中的前 4 条记录,而不指定任何条件子句,例如 WHERE、ORDER BY 等 −
SELECT TOP 4 * FROM CUSTOMERS;
TOP with ORDER BY Clause
SQL 中的 ORDER BY 子句用于按升序或降序对查询的结果集进行排序。我们可以将其与 TOP 子句一起使用,以按排序顺序检索(或更新或删除等)前 N 条记录。
TOP Clause with PERCENT
我们还可以使用 PERSENT 子句和 TOP 子句,通过指定百分比值而不是数字来限制记录。
TOP with WHERE Clause
我们可以将 TOP 子句与 WHERE 子句一起使用,以限制给定的行数并根据指定条件对其进行筛选。
TOP Clause With DELETE Statement
TOP 子句可与 DELETE 语句一起使用,以删除满足给定条件的特定行数。
TOP and WITH TIES Clause
使用 ORDER BY 子句根据列对表中的数据进行排序时,某些情况下,多行在 ORDER BY 子句中指定的列中可能包含相同的值。
如果尝试使用 TOP 子句限制记录数,则并非所有符合条件的列都可能被筛选。
WITH TIES 子句用于确保具有相同值(具有 "tied" 值的记录)的记录包含在查询结果中。
Example
考虑以上创建的表 CUSTOMERS 。如果我们需要根据工资值按升序排列检索前 2 位客户,则查询应如下所示:−
SELECT TOP 2 * FROM CUSTOMERS ORDER BY SALARY;
结果表如下:−
ID |
NAME |
AGE |
ADDRESS |
SALARY |
2 |
Khilan |
25 |
Delhi |
1500.00 |
3 |
Kaushik |
23 |
Kota |
2000.00 |
但是,表中前两个工资值(按升序排列)是 1500 和 2000,并且 CUSTOMERS 表中还有另一列工资值为 2000 的列,此列未包含在结果中。
如果要检索前两个工资值(按升序排列)的所有列。我们需要使用 WITH TIES 子句,如下所示:−
SELECT TOP 2 WITH TIES * FROM CUSTOMERS ORDER BY SALARY;
Uses of TOP Clause
TOP 子句的一些常见用例包括:−
-
Pagination − 显示大量记录时,TOP 子句可用于一次仅返回特定数量的记录,从而实现更易于管理且更高效的数据分页。
-
Sampling data − TOP 子句可用于快速从表中检索数据样本以进行测试或分析。
-
Improving performance − 通过限制返回的行数,TOP 子句可以帮助提高查询的性能,尤其是在处理大型表时。
-
Debugging − 在开发或调试查询时,TOP 子句可用于快速返回少量行以测试查询的正确性。
-
Data visualization − TOP 子句可用于限制为可视化目的返回的行数,例如创建图表或图形。