SQL Server Select Top語句

在本教學中,將學習如何使用SQL Server SELECT TOP語句來限制查詢返回的行。

SELECT TOP子句用於限制查詢結果集中返回的行數或行百分比。

由於存儲在表中的行的順序是不可預測的,因此SELECT TOP語句始終與ORDER BY子句一起使用。 結果,結果集限於前N個有序行數。

以下是帶有SELECT語句的TOP子句的語法:

SELECT TOP (expression) [PERCENT]
    [WITH TIES]
FROM
    table_name
ORDER BY
    column_name;

在此語法中,SELECT語句可以包含其他子句,如:WHEREJOINHAVINGGROUP BY

  • expression - TOP關鍵字後面是一個運算式,它指定要返回的行數。 如果使用PERCENT,則將運算式計算為浮點值,否則將其轉換為BIGINT值。
  • PERCENT - PERCENT關鍵字指示查詢返回前N個行百分比,其中N是運算式的結果。
  • WITH TIES - WITH TIES用於返回更多行,其值與有限結果集中的最後一行匹配。 請注意,WITH TIES可能會導致返回的行數多於在運算式中指定的行數。

例如,如果要返回運算式最多的產品,可以使用TOP 1。但是,如果兩個或更多產品的價格與最貴的產品相同,那麼會錯過結果集中其他最貴的產品。 為避免這種情況,可以使用TOP 1 WITH TIES。 它不僅包括第一個最貴的產品,還包括第二個,第三個,等等。

SQL Server SELECT TOP示例

下麵將使用示例資料庫中的production.products表進行演示。

1. 使用具有恒定值的TOP

以下示例使用常量值返回前10個最貴的產品。

SELECT TOP 10
    product_name,
    list_price
FROM
    production.products
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

2. 使用TOP返回行的百分比

以下示例使用PERCENT指定結果集中返回的產品數。 production.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,因此它返回了另外價格與第三個相同的三個產品。

在本教學中,學習了如何使用SQL Server SELECT TOP語句來限制查詢返回的行數或行百分比。


上一篇: SQL Server數據查詢 下一篇: SQL Server連接表