SQL: Проблемы с переводом рекурсивного соединения с помощью Statement для Postgres - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь перевести следующий оракул sql, который вставляет 1000 строк с инкрементными значениями в таблицу:

insert into tableName (col1, col2, col3)
    select 'AN' || (1000000 + ROWNUM), 'EXT' || (9000000 + ROWNUM), ROWNUM
    from dual
    Connect By  ROWNUM <= 1000 ;

Что касается поддержки Postgres, я знаю, что могу заменить ROWNUM на ROW_NUMBER () OVER (), но я действительно испытываю головную боль по поводу перевода оператора connect by. Я читал о CTE, но я не понимаю, как я могу использовать это с оператором вставки.

Кто-нибудь знает, как написать это утверждение для postgresql? Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы можете создать серию и просто использовать это:

insert into tableName (col1, col2, col3)
    select 'AN' || (1000000 + g.n), 'EXT' || (9000000 + g.n), g.n
    from generate_series(1, 1000) g(n);
0 голосов
/ 27 апреля 2018

Попробуйте generate_series.

 select 'AN' || (1000000 + ROWNUM), 'EXT' || (9000000 + ROWNUM),
 ROWNUM from generate_series(1,10000) as rownum ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...