【问题标题】:Update column with return value使用返回值更新列
【发布时间】:2017-02-06 18:36:57
【问题描述】:

我想将一个表中的列拆分为另一个表,并使用外键将原表中的行指向新表。

如何将列数据复制到另一个表并使用从插入到新表中返回的标识更新每一行?

这是我目前所拥有的:

insert into tbl_2(col_6,col_7) select col_2, col_3 from tbl_1 returning col_5 

我正在使用 postgres 作为我的数据库。

【问题讨论】:

  • 您能否编辑您的问题并提供示例数据和所需的结果。

标签: sql postgresql


【解决方案1】:

您可以在 CTE 中执行此操作。如果我理解正确:

with i as (
      insert into tbl_2(col_6,col_7)
          select col_2, col_3
          from tbl_1
      returning tbl_2_id
     )
update tbl_1
    set tbl_2_id = i.tbl_2_id
    from i
    where tbl_1.col_6 = i.col_6 and tbl_1.col_7 = i.col_7;

【讨论】:

    【解决方案2】:

    最后,我只是在新表中添加了一个临时列,并添加了第一个表中的主键,并执行了第二条更新语句将每个外键添加回第一个表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-09
      • 2013-04-20
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多