2017-10-19 77 views
0

我有一個projects表,帶有時間戳記列started_attasks表,其中列project_idstarted_at使用另一個表列的最舊值更新SQL datetime列?

有沒有辦法使用單個查詢進行批量更新projects行以設置started_attasks表中最早的started_at值?

例如,如果表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。

+0

不,我不刪除任何行。只需更新'projects'表的行,根據'tasks'表的值。 – Florent2

+0

因爲在運行查詢之前它只有2行。 – Florent2

回答

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

相關問題