2017-02-10 81 views
0

由于各种原因,我在PostgreSQL数据库中将整数键转换为UUID。所以现在我有一个ident serial primary key的桌子Person和一个person_id integer references Person (ident)的桌子TeamPerson。基于当前记录的更新表

然后我去添加一个uid UUID列,Person和PersonPerson的一个person_uid references Person (uid)列。所以现在我需要让所有person_uid对应于person_id引用。我想是这样的:

UPDATE TeamPerson 
SET person_uid = (
    SELECT uid FROM Person WHERE ident = current_team_person_row.person_id 
) 

current_team_person_row是我的问题,我试图解决的问题。我想我需要一个带有WHERE CURRENT OF的游标,但我只是没有理解如何做到这一点。

回答

0

您可能正在寻找:correlated subquery,也被称为“相关子查询”

在SQL数据库查询,相关子查询(也称为 同步的子查询)是一个子查询(查询嵌套在另一个 查询中),该查询使用来自外部查询的值。

UPDATE TeamPerson tp 
SET person_uid = (
    SELECT uid FROM Person p 
    WHERE p.ident = tp.person_id 
) 
+0

啊,我太亲近了!谢谢! :) – Gargoyle

相关问题