- 使用row_number()函数为查询结果集中的每一行分配一个唯一的行号,常用于分页查询中。例如:
SELECT
ROW_NUMBER() OVER (ORDER BY ProductID) AS RowNum,
ProductID,
ProductName,
UnitPrice
FROM Products
- 可以结合PARTITION BY子句将结果集分组,每个分组从1开始计数。例如:
SELECT
ROW_NUMBER() OVER (PARTITION BY CategoryID ORDER BY ProductID) AS RowNum,
ProductID,
ProductName,
CategoryID
FROM Products
- 使用row_number()函数来查找每个分组中的前N个记录。例如,以下查询将在每个类别中找到前两个产品:
SELECT
*
FROM (
SELECT
ProductID,
ProductName,
CategoryID,
ROW_NUMBER() OVER (PARTITION BY CategoryID ORDER BY ProductID) AS RowNum
FROM Products
) AS RankedProducts
WHERE RowNum <= 2
- 可以在row_number()函数中使用ORDER BY子句来指定排序规则。例如,以下查询按UnitPrice从高到低对产品进行排序:
SELECT
ROW_NUMBER() OVER (ORDER BY UnitPrice DESC) AS RowNum,
ProductID,
ProductName,
UnitPrice
FROM Products