Tsql 具有联接的派生表中的行号()不连续?
我有一个包含连接数的派生表,我试图实现分页,但行\ u number()不是连续的。我想我知道为什么它不是连续的,但有没有办法强迫它是连续的Tsql 具有联接的派生表中的行号()不连续?,tsql,sql-server-2008,Tsql,Sql Server 2008,我有一个包含连接数的派生表,我试图实现分页,但行\ u number()不是连续的。我想我知道为什么它不是连续的,但有没有办法强迫它是连续的 SELECT [Results].[Row1], [Results].[Row2], [Results].[Row3], FROM ( SELECT [p].[Row1], [p].[Row2], [p].[Row3], ROW_NUMBER() OV
SELECT [Results].[Row1],
[Results].[Row2],
[Results].[Row3],
FROM (
SELECT [p].[Row1],
[p].[Row2],
[p].[Row3],
ROW_NUMBER() OVER (ORDER BY [p].[Id]) As RowNumber
FROM Table1 As [l]
JOIN Table2 As [p] ON [l].[fId] = [p].[Id]
JOIN Users As [u] ON [p].[fId] = [u].[Id]
JOIN Questions As [q] ON [p].[Id] = [q].[fId]) As Results
我将感谢任何帮助,谢谢 为什么不直接按结果排序。行数在最后?老实说,排序方式与我无关,我只是不明白为什么行数()不是顺序的?顺序是指顺序,还是我误解了这个术语?如果是这样,那是因为您没有指定查询的排序方式;根据查询分析器选择的查询计划(包括索引使用等),可以使用不保持顺序的操作
ROW_NUMBER()
对行进行计数,由于您进行了连接,因此可能会有多行具有相同的[p].[id]
,但具有唯一的行号。如果您不想这样做,请使用RANK()
或其他函数,或者更具体地说明OVER(ORDER BY)
中的顺序。不,对不起,我所说的顺序是,行号()是1、2、3、4、5。。。N对1,23,45,67,1345。。。N
with tempTable as (
SELECT [Results].[Row1],
[Results].[Row2],
[Results].[Row3],
FROM (
SELECT [p].[Row1],
[p].[Row2],
[p].[Row3],
FROM Table1 As [l]
JOIN Table2 As [p] ON [l].[fId] = [p].[Id]
JOIN Users As [u] ON [p].[fId] = [u].[Id]
JOIN Questions As [q] ON [p].[Id] = [q].[fId]) As Results
) select ROW_NUMBER() OVER (ORDER BY something) As RowNumber, * from tempTable