如果存在该值,则为所有用户更新具有单个值的列的所有值

UPDATE all values of a column with a single value, if that value is present, for all users

我有 table 这样的:

ID | cur_val | done  | res 
1  | 10000   | false | false
2  | 20000   | false | false
3  | 30000   | false | false
1  | 40000   | false | false
3  | 60000   | false | false
1  | 10000   | true  | false

我需要一个更新查询来根据 done 列中的值更新 res 列(默认情况下为 false)。 具体来说,对于任何 ID,如果 donetrue,则与该 ID 关联的所有 res 值都应更新为 true

最后的 table 应该是这样的:

ID | cur_val | done  | res 
1  | 10000   | false | true
2  | 20000   | false | false
3  | 30000   | false | false
1  | 40000   | false | true
3  | 60000   | false | false
1  | 10000   | true  | true

如果有任何帮助,我将不胜感激。

sql server

UPDATE t1
SET res = 1
FROM yourtable t1
WHERE EXISTS
    (SELECT 1
     FROM yourtable t2
     WHERE t1.ID = t2.ID
       AND done = 1)

postgres

UPDATE yourtable t1
SET res = true
WHERE EXISTS
    (SELECT 1
     FROM yourtable t2
     WHERE t1.id = t2.id
       AND done = true)
;