在本教學中,將學習如何使用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
語句可以包含其他子句,如:WHERE
,JOIN
,HAVING
和GROUP 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連接表