内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我想ROW_NUMBER()
用来得到...
max(ROW_NUMBER())
- >或者我想这也将是所有行的计数我试着做:
SELECT max(ROW_NUMBER() OVER(ORDER BY UserId)) FROM Users
但它似乎没有工作...
ROW_NUMBER()
使用给定的信息,即。如果我有一个名字,我想知道这个名字是从哪里来的。我认为这会和我为#1尝试的东西类似
SELECT ROW_NUMBER() OVER(ORDER BY UserId) From Users WHERE UserName='Joe'
但是这也不管用......
有任何想法吗?
虽然我同意其他人可以count()
用来获取总行数,但下面是如何使用row_count()
:
with temp as ( select row_number() over (order by id) as rownum from table_name ) select max(rownum) from temp
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