使用另一个表列的最旧值更新SQL datetime列?

时间:2017-10-19 14:10:27

标签: sql postgresql

我有一个projects表,其中包含时间戳列started_attasks表,其中包含project_idstarted_at列。

有没有办法使用单个查询进行批量更新,projects行设置started_at started_at表中最早的tasks值?

例如,如果表tasks包含行:

project_id | started_at
1          | 2010-01-01
1          | 2015-01-01
2          | 2000-01-01
2          | 2020-01-01

运行查询会像这样更新projects

id | started_at
1  | 2010-01-01
2  | 2000-01-01

我使用PostgreSQL。

1 个答案:

答案 0 :(得分:1)

UPDATE projects 
SET started_at = OldestDate
FROM
(
   SELECT project_id, MIN(started_at) AS OldestDate
   FROM tasks
   GROUP BY project_id
) AS t 
WHERE t.project_id = id;

Demo