2
select * from       (                                                   
select a.*,row_number() over() as rk                                    
from table1 tba  
                     ) as foo where rk between 11 and 20  

这适用于数据库表。我正在使用一个视图,它是 2 个表的连接。当我尝试做 rownum 时,它说:“功能不允许

select * from       (                                                   
select a.*,row_number() over() as rk                                    
from view1 v1  
                     ) as foo where rk between 11 and 20  

DB2 中的 rownum 有什么建议或替代方案吗?

4

2 回答 2

2

您应该row_number()在您的视图中包含

于 2011-11-09T23:23:25.507 回答
2

正如@GregM 建议的那样,将其包含在视图中的另一种选择是将其放入 CTE 中:

WITH numbered as (SELECT a.*, ROW_NUMBER() OVER() as rk
                  FROM table1 as a)
SELECT *
FROM numbered
WHERE rk BETWEEN 11 AND 20

请注意,这与您的原始代码一样慢(在我的版本上运行得很好)。

于 2011-11-10T00:35:59.873 回答