问题 ROW NUMBER()OVER


我遇到了一个有点特殊的语法,你能帮我找出它的含义吗?谢谢。

SELECT ROW NUMBER() OVER (ORDER BY Product.ProductID) FROM Product;

此外,这也失败了。 我对此特别感兴趣 ROW NUMBER() OVER 位。这是我第一次遇到OVER关键字。

如果您需要完整的示例,请告诉我。为了清楚起见,我稍微缩短了一点。


5117
2018-05-29 23:57


起源

msdn.microsoft.com/en-us/library/ms186734.aspx - Ken White


答案:


ROW_NUMBER()函数需要OVER(ORDER BY)表达式来确定行的编号顺序。默认顺序为升序,但也可以使用降序。此函数对于各种事情非常有用,例如在迭代一组记录时跟踪行,因为T-SQL不允许在T-SQL之外检索游标。 @tunimise fasipe是正确的,你错过了_


9
2018-05-30 01:24



非常感谢你们两位!这很有趣,因为我正在阅读的书中包含几个例子,每次都没有下划线。我误导了。我会理解一个错字,但同样的3个?非常感谢。 - Anna T


请注意,您在ROW_NUMBER中缺少下划线

SELECT ROW_NUMBER() OVER (ORDER BY Products.ProductID) FROM Products;

它的作用是按照检索顺序打印出产品表中每条记录的行号(按ProductID排序)

e.g.
RowNumber   ProductName
------------------------
1           Flower
2           Bag
3           Car
...         ...

为清楚起见,我添加了ProductName列


6
2018-05-30 00:12



它们的检索顺序由ORDER BY-在这种情况下ASC顺序的ProductID列确定。 - Dylan Bijnagte