Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 具有联接的派生表中的行号()不连续?_Tsql_Sql Server 2008 - Fatal编程技术网

Tsql 具有联接的派生表中的行号()不连续?

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

我有一个包含连接数的派生表,我试图实现分页,但行\ u number()不是连续的。我想我知道为什么它不是连续的,但有没有办法强迫它是连续的

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