使用返回值更新列
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】:最后,我只是在新表中添加了一个临时列,并添加了第一个表中的主键,并执行了第二条更新语句将每个外键添加回第一个表中。
【讨论】:
以上是关于使用返回值更新列的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用nsmallest函数返回特定数据列中前N个最小值(搜寻最小的n个元素)pandas使用nsmallest函数返回特定数据列中前N个最小值所对应的数据行