SQL Server SELECT TOP
目录SELECT TOP简介
SELECT TOP
子句允许您限制查询结果集中返回的行数或行百分比
由于表中存储的行的顺序未指定,因此SELECT TOP
语句始终与ORDER BY
子句一起使用。因此,结果集通常返回前N行排序后的数据。
语法:
SELECT TOP (expression) [PERCENT]
[WITH TIES]
FROM
table_name
ORDER BY
column_name;
其中
expression
TOP
关键字后面是一个表达式,用于指定要返回的行数。如果使用PERCENT
(百分比),则表达式将计算为浮点值,否则将转换为BIGINT
值。
PERCENT
PERCENT
表示查询返回前百分之N
的行,N
就是表达式expression
的值。
WITH TIES
WITH TIES
允许您返回更多与结果集中最后一行匹配的值的行。
例如,如果您想返回最昂贵的产品,可以使用前1。但是,如果两个或多个产品的价格与最昂贵的价格相同,则您将错过结果集中其他最昂贵的商品。
例如,如果您想返回最贵的产品,可以使用 TOP 1
。但是,如果两个或多个产品的价格与最贵的产品相同,那么就会错过结果集中其他最贵的产品。
为了避免这种情况,可以使用TOP 1 WITH TIES
。它不仅包括第一个最贵的产品,还包括第二个,等等。
SELECT TOP示例
使用如下表操作:
1)使用具有固定值的TOP
下面的示例使用一个常量值返回前10名最贵的产品。
SELECT TOP 10
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC;
2)使用TOP返回行的百分比
以下示例使用百分比指定结果集中返回的产品数。products
表有321行,因此,321行中的百分之一是小数值(3.21),SQL Server将其四舍五入到下一个整数,在本例中为4。
SELECT TOP 1 PERCENT
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC;
3)使用TOP WITH TIES来包括与最后一行中的值匹配的行
以下语句返回前三名最贵的产品:
SELECT TOP 3 WITH TIES
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC;
在本例中,第三贵的产品的标价为6499.99。由于该语句使用TOP WITH TIES
,它返回了三个与第三个价格相同的产品。