小编use*_*008的帖子

在哪些情况下SQL Server ROW_NUMBER()不是从1开始?

我们ROW_NUMBER()在查询中使用.它几乎在所有情况下都会返回正确的结果.但是对于1个用户来说,它的表现非常不同.

With #TEST as (
    select top 50 
       ROW_NUMBER() over (order by a.ID) as RN,
       a.ID ID, a.Name Name  
    FROM a 
    where a.name like '%test%')
select * 
from #TEST  
where RN BETWEEN 1 AND 50 
order by RN 
Run Code Online (Sandbox Code Playgroud)

当页面大小设置为50时,此查询对该用户正常工作.但是当页面大小设置为100时,我们发现它没有返回所有行.它只返回10行.即使有超过100个结果满足条件.请找到以下无法正常工作的查询.

With #TEST as (
    select top 100 
        ROW_NUMBER() over (order by a.ID) as RN,
        a.ID ID, a.Name Name  
    FROM a 
    where a.name like '%test%')
select * 
from #TEST 
where RN BETWEEN 1 AND 100 
order by RN 
Run Code Online (Sandbox Code Playgroud)

当试图验证原因时,我们发现第二个查询返回的RN值大于100.它不是从1开始.

有人可以解释这种行为的可能原因.语法中是否有任何要修改的内容,或者在SQL …

sql t-sql sql-server analytic-functions

4
推荐指数
1
解决办法
3441
查看次数

标签 统计

analytic-functions ×1

sql ×1

sql-server ×1

t-sql ×1