带有子查询的Postgresql更新[重复]

Posted

技术标签:

【中文标题】带有子查询的Postgresql更新[重复]【英文标题】:Postgresql Update with subquery [duplicate] 【发布时间】:2013-07-09 05:27:18 【问题描述】:
UPDATE Customer C
SET name = B.name, 
age = B.age
FROM (SELECT A.*, B.* FROM CUSTOMER_TEMP WHERE A.ID = B.ID) AS B

我得到了一个如上所述的 sql,在我运行查询后,它会将我的所有行更新为相同的结果。

我想知道我需要一个 where

UPDATE Customer C
SET name = B.name, 
age = B.age
FROM (SELECT A.*, B.* FROM CUSTOMER_TEMP WHERE A.ID = B.ID) AS D
WHERE C.ID = D.ID

但是我得到的这个 id 对于最后一个查询是不明确的。

【问题讨论】:

【参考方案1】:

试试这个

update Customer set
    name = B.name, 
    age = B.age
from Customer as C
    inner join CUSTOMER_TEMP as B on B.ID = C.ID

SQL FIDDLE EXAMPLE

【讨论】:

以上是关于带有子查询的Postgresql更新[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL - 使用子查询更新多个列值

2017.7.7 postgreSQL在插入造成重复时执行更新

使用 PostgreSQL 查询更新复杂 JSONB 对象以删除子子属性

postgresql函数-获取受更新查询影响的行数[重复]

带有“lag()”窗口函数的 PostgreSQL 更新查询

Postgresql 和 Oracle:从公共子查询更新多个表