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命令。

顾客:

CustomerIdCustomerNameCustomerAgeCustomerGender
1John31M
2Amit25M
3Annie35F
4Tom38M

场景:

从"性别"为"男性"的"客户"表中获取第一行数据。

SELECT TOP 1 * FROM Customer WHERE CustomerGender = 'M';

输出:

CustomerIdCustomerNameCustomerAgeCustomerGender
1John31M

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';

输出:

CustomerIdCustomerNameCustomerAgeCustomerGender
1John31M
2Amit25M

多个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);

输出:

CustomerIdCustomerNameCustomerAgeCustomerGender
4Tom38M