小编典典

可写的公用表表达式和多个插入语句

sql

如何在有效的Postgres SQL查询中编写以下内容:

with foo as (select * from ...)
insert into bar select * from foo
insert into baz select * from foo

阅读 138

收藏
2021-04-22

共1个答案

小编典典

如果您希望在一条语句中全部使用,则可以使用CTE:

with foo as (
      select * from ...
     ),
     b as (
      insert into bar
          select * from foo
          returning *
     )
insert into baz
    select * from foo;

笔记:

  • 您应在列列表中添加insert
  • 您应该指定列名 明确select *。这很重要,因为两个表中的列可能不匹配。
  • 我总是在CTE中returningupdate/ insert/delete一起使用。这是正常的用例-例如,您可以从插入中获取序列ID。
2021-04-22