使用返回值更新列

Posted

技术标签:

【中文标题】使用返回值更新列【英文标题】: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 作为我的数据库。

【问题讨论】:

您能否编辑您的问题并提供示例数据和所需的结果。 【参考方案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】:

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

【讨论】:

以上是关于使用返回值更新列的主要内容,如果未能解决你的问题,请参考以下文章

SQL 根据其他行的值返回行

在 Android 中返回 SQLite 表的所有列

pandas使用nsmallest函数返回特定数据列中前N个最小值(搜寻最小的n个元素)pandas使用nsmallest函数返回特定数据列中前N个最小值所对应的数据行

使用python返回excel中两个不同文件中两列之间的差异

如何使用PDO从SET类型列返回多个值?

Spring JDBC为具有值的列返回空值