将页号分配给表记录ORACLE SQL

时间:2018-03-13 11:58:27

标签: sql oracle

我正在努力争取逻辑。 想法是我需要为表的前10个记录分配值1,接下来的10个记录值应该是2,接下来的10个值应该是3,依此类推。

我不想使用循环概念,因为表是一个大表,并且用于更新值的嵌套循环将不会提高性能。我可能错了。

请在Oracle SQL中建议

1 个答案:

答案 0 :(得分:1)

您需要一个指定排序的列(SQL表代表无序集)。之后,解决方案只是row_number(),并带有一些算术:

select t.*,
       (1 + trunc((row_number() over (order by orderingcol) - 1) / 10)) as grp
from t;

如果您确实想将此分配给表格,我建议您使用merge。但是,计算查询中的值可能足以满足您的需要。