从另一行更新postgres中的一行

Rol*_*and 3 mysql postgresql

我有两个表,一个称为详细信息,另一个称为 c_details。除了表名不同外,两个表完全相同

不,我在这两个表中都有数据

是否可以使用 c_details 中的行详细更新该行

例如。

更新详细信息集(从 c_details 中选择 *)?

Kou*_*rev 6

您必须明确描述要更新的列列表,以及在两个表之间匹配列的键。

从另一个表更新一个表的语法在 PostgreSQL 文档的UPDATE 一章中有详细描述。

UPDATE
  details
SET
  name = c.name,
  description = c.description
FROM
  c_details AS c
WHERE
  c.id=details.id;
Run Code Online (Sandbox Code Playgroud)


New*_*ria 5

如果您需要 UPDATE FROM SELECT 并根据聚合函数 (MIN) 设置字段,那么 SQL 应读取:

UPDATE
  details
SET
  name = (
    SELECT 
      MIN(c.create_at) 
    FROM
      c_details AS c
    WHERE
      c.type = 4
  )
WHERE
  c.id = details.id;
Run Code Online (Sandbox Code Playgroud)