如何避免使用row_number嵌套sql查询

时间:2016-06-08 00:48:59

标签: sql sql-server sql-server-2014

如何避免嵌套此查询。我认为这会使查询膨胀并使其难以阅读。我知道我可以将Row_number() OVER (ORDER BY id ASC)放在where条款中,但有没有办法实现呢?

SELECT * 
FROM   (SELECT [id], 
               [title], 
               [image], 
               [description], 
               [column5154], 
               [column5155], 
               [column5156], 
               RowNumber1 = Row_number() OVER (ORDER BY id ASC) 
        FROM   [TestTable] x 
WHERE  x.rownumber1 % 5 = 0 

1 个答案:

答案 0 :(得分:3)

如果你想要每隔五行,不关心RowNumber1,并且不想使用子查询,你可以这样做:

select top (20) percent t.*
from testtable t
order by row_number() over (order by id asc)) % 5;

order by允许使用窗口函数。就个人而言,我认为子查询更容易理解。