如果存在该值,则为所有用户更新具有单个值的列的所有值
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
,如果 done
是 true
,则与该 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)
;
我有 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
,如果 done
是 true
,则与该 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)
;