如何在x次后增加一行

时间:2017-07-13 20:37:36

标签: sql database postgresql

我有一个问题,我必须将大量值放入一个遵循模式的表中,但我不知道从哪里开始。我需要它看起来像这样:

    table_id   second_id   type_id   default_value
    --------   ---------   -------   -------------
        1          1          1        'default'
        2          1          2        'default'
        3          1          4        'default'
        4          2          1        'default'
        5          2          2        'default'
        6          2          4        'default'

该模式持续了一段时间,其中table_id每行递增,second_id每三行递增一次,type_id也每隔三行循环一次。任何帮助表示赞赏。谢谢。

2 个答案:

答案 0 :(得分:2)

嗯。这是我想到的第一件事:

select row_number() over (order by id2.n, id3.n) as first_id,
       id2.n as second_id, id3.n as third_id,
       'default' as default_value
from generate_series(1, 10) id2(n) cross join
     (values (1), (2), (4)) id3(n);

答案 1 :(得分:1)

select
  i+1 as table_id,
  i/3+1 as second_id,
  (array[1,2,4])[i%3+1] as type_id,
  'default' as default_value
from
  generate_series(0,29) as i;