从另一行更新postgres中的行

时间:2009-11-06 09:40:43

标签: postgresql mysql

我有两个表,一个叫做详细信息,另一个叫做c_details。除了不同的表名

之外,两个表完全相同

我在这两个表中都没有数据

是否可以使用c_details

中的行更新详细信息行

例如

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

3 个答案:

答案 0 :(得分:3)

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

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

UPDATE
  details
SET
  name = c.name,
  description = c.description
FROM
  c_details AS c
WHERE
  c.id=details.id;

答案 1 :(得分:3)

如果你需要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;

答案 2 :(得分:1)

使用此sql查询:

INSERT INTO details SELECT * FROM c_details