SQL Select Top
时间:2020-02-23 14:32:33 来源:igfitidea点击:
SQL Select Top子句
当处理大量数据或者包含大量数据的表时,SQL SELECT TOP子句非常有用。
此子句用于限制返回结果集的记录数。
SELECT TOP子句可以两种方式使用。
通过提供要返回的记录数作为结果集的一部分。
提供要返回的记录数的百分比作为结果集的一部分。
我们将在以下各节中尝试详细了解这两种用法。
MySQL和Oracle不支持Select Top子句。
在MySQL中,您可以使用LIMIT子句来选择有限数量的行。
在Oracle中,ROWNUM执行相同的工作。
但是,SQL Server支持此功能,此处给出的所有示例都适用于SQL Server数据库。
SQL选择顶部–要返回的记录数
通过提供要返回的记录数作为结果集,我们将尝试了解使用SQL SELECT TOP的语法。
选择顶部语法
SELECT TOP number column_name FROM table_name WHERE condition;
在上面的语法中,所有列数据都是基于WHERE子句检索的,并且受作为SELECT TOP一部分提供的数字的限制。
让我们考虑下面的客户表,以了解用于根据条件复制所有列数据的SELECT TOP命令。
顾客:
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
1 | John | 31 | M |
2 | Amit | 25 | M |
3 | Annie | 35 | F |
4 | Tom | 38 | M |
场景:
从"性别"为"男性"的"客户"表中获取第一行数据。
SELECT TOP 1 * FROM Customer WHERE CustomerGender = 'M';
输出:
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
1 | John | 31 | M |
SQL选择要返回的记录的最高百分比
通过提供要返回的记录百分比作为结果集,我们将尝试了解使用SQL SELECT TOP的语法。
语法:
SELECT TOP number PERCENT column_name FROM table_name WHERE condition;
在以上语法中,所有列数据都是基于WHERE子句检索的,并受作为SELECT TOP一部分提供的百分比的限制。
让我们考虑以下客户表,以了解用于根据条件复制所有列数据的SELECT INTO命令。
场景:
从"客户"表中获取性别为男性的50%行数据。
查询:
SELECT TOP 50 PERCENT * FROM Customer WHERE CustomerGender = 'M';
输出:
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
1 | John | 31 | M |
2 | Amit | 25 | M |
多个SELECT TOP语句
我们可以组合多个SELECT TOP语句以获得所需的结果
语法:
SELECT TOP number column_name FROM table_name WHERE condition (the select statement with another SELECT TOP);
场景:
从"性别"为"男性"的"客户"表中获取第一行数据。
查询:
SELECT TOP 1 * FROM Customer WHERE CustomerAge = (SELECT TOP 1 CustomerAge FROM Customer ORDER BY CustomerAge desc);
输出:
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
4 | Tom | 38 | M |