ROW_NUMBER 函數
ROW_NUMBER 是 SQL 2005 中新增的函數, 多用于分頁, 基本的語法為
ROW_NUMBER() OVER([<partition_by_clause>] <order_by_clause>)
其中, 分區語句是可選的, 排序語句是必須的, 比如這樣的語句:
SELECT ROW_NUMBER() OVER(ORDER BY ProductID), CategoryID, ProductName, UnitPrice FROM Products
輸出結果為:

也可以按照 CategoryID 對行號進行分區, 也就是將行號按照 CategoryID 進行分組, 例如:
SELECT ROW_NUMBER() OVER(PARTITION BY CategoryID ORDER BY ProductID), CategoryID, ProductName, UnitPrice FROM Products
返回結果為:

ROW_NUMBER 通常用于分頁, 但是也有一些巧妙地用法, 例如, 要查詢每個分類中最便宜的三種產品, 可以使用下面的查詢語句:
SELECT * FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY CategoryID ORDER BY UnitPrice) AS 'RowNum',
CategoryID,
ProductName,
UnitPrice
FROM
Products
) AS p
WHERE
RowNum <= 3
返回結果為:

張志敏所有文章遵循創作共用版權協議,要求署名、非商業 、保持一致。在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。
本博客已經遷移到 GitHub , 圍觀地址: https://beginor.github.io/
浙公網安備 33010602011771號