SQL:通过 Postgres 语句翻译递归连接时出现问题

标签 sql postgresql

我尝试翻译以下 oracle sql,它将 1000 行具有增量值的行插入到表中:

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

对于 Postgres 支持,我知道我可以用 ROW_NUMBER() OVER () 替换 ROWNUM,但我真的很头疼翻译 connect by 语句。我已阅读有关 CTE 的信息,但我不知道如何将其与插入语句一起使用。

有谁知道如何为 postgresql 编写此语句?谢谢。

最佳答案

您可以生成一个系列并使用它:

insert into tableName (col1, col2, col3)
    select 'AN' || (1000000 + g.n), 'EXT' || (9000000 + g.n), g.n
    from generate_series(1, 1000) g(n);

关于SQL:通过 Postgres 语句翻译递归连接时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50061777/

相关文章:

ruby-on-rails-3 - 包含重音字符的名称的 ActiveRecord 查询失败

mysql - 使用入职日期计算员工的周年纪念日

sql - 在 Redshift 中将数字日期时间转换为 AM PM 时间

sql - 如何访问 Postgresql 查询中行类型内的字段?

sql - 如何使用连接编写此查询?

sql - 按两个别名之一排序(对于同一个表的关系)

java - Tomcat 和 Hibernate : HibernateException: Unable to determine appropriate DataSource to use

sql - 更新多行时强制转换为NULL类型

php - 语法错误或访问冲突 : 1064

将参数传递给 PostgreSQL 查询时出现 Python TypeError : not all arguments converted during string formatting,