如何使用ROW_Number()?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我想ROW_NUMBER()用来得到...

  1. 要得到max(ROW_NUMBER())- >或者我想这也将是所有行的计数

我试着做:

SELECT max(ROW_NUMBER() OVER(ORDER BY UserId)) FROM Users

但它似乎没有工作...

  1. 为了ROW_NUMBER()使用给定的信息,即。如果我有一个名字,我想知道这个名字是从哪里来的。

我认为这会和我为#1尝试的东西类似

SELECT ROW_NUMBER() OVER(ORDER BY UserId) From Users WHERE UserName='Joe'

但是这也不管用......

有任何想法吗?

提问于
用户回答回答于

虽然我同意其他人可以count()用来获取总行数,但下面是如何使用row_count()

  1. 要获得总行数: with temp as ( select row_number() over (order by id) as rownum from table_name ) select max(rownum) from temp
  2. 要获取名称是Matt的行号: with temp as ( select name, row_number() over (order by id) as rownum from table_name ) select rownum from temp where name like 'Matt'

你可以分别进一步使用min(rownum)max(rownum)获取Matt的第一行或最后一行。

用户回答回答于

对于第一个问题,为什么不使用?

SELECT COUNT(*) FROM myTable 

得到点数。

对于第二个问题,该行的主键是用于识别特定行的内容。不要尝试使用行号。

如果你在主查询中返回了Row_Number()

SELECT ROW_NUMBER() OVER (Order by Id) AS RowNumber, Field1, Field2, Field3
FROM User

然后,当你想要返回5行时,你可以获取当前行号并使用以下查询来确定具有currentrow的行-5

SELECT us.Id
FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS Row, Id
     FROM User ) us 
WHERE Row = CurrentRow - 5   

扫码关注云+社区