update Claim
set first_name = random_name(7),
Last_name = random_name(6),
t2.first_name=random_name(7),
t2.last_name=random_name(6)
from Claim t1
inner join tbl_ecpremit t2
on t1.first_name = t2.first_name
我收到以下错误
column "t2" of relation "claim" does not exist
答案 0 :(得分:0)
您可以使用所谓的data-modifying CTE:
执行此操作WITH c AS (
UPDATE claim SET first_name = random_name(7), last_name = random_name(6)
WHERE <put your condition here>
RETURNING *
)
UPDATE tbl_ecpremit SET last_name = c.last_name
FROM c
WHERE first_name = c.first_name;
这假设random_name()
是您定义的函数,它不是PostgreSQL afaik的一部分。
这里的巧妙技巧是UPDATE
查询中的WITH
使用RETURNING
子句返回第一个表中的更新记录。然后,您可以在主UPDATE
语句中使用该记录,以在第二个表中使用完全相同的数据。
这一切都非常不稳定,因为你们都在链接和修改&#34; first_name&#34;具有一些随机值的列。在现实生活中,如果你对名称和条件有更多的逻辑,这将只会有效。