7.4 SQL Server SELECT TOP

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,它返回了三个与第三个价格相同的产品。

posted @ 2022-08-27 18:01  平元兄  阅读(373)  评论(0编辑  收藏  举报