【发布时间】:2017-10-08 13:19:52
【问题描述】:
假设我们有下表:
id | col_a | col_b | col_c
1 | abc | null | qwqw
2 | null | null | null
3 | null | ijij | cba
我们想要进行以下更新:
- 第 1 行:SET col_a = cba
- 第 2 行:SET col_b = uiui, col_c = zxzx
- 第 3 行:SET col_b = null
首先,是否可以在一个查询中完成?
如果没有,最好的选择是什么?
- 每行一个查询,例如 UPDATE table SET ... WHERE id=1;
- 获取行,用新值替换旧值,然后执行大量 INSERT INTO table VALUES ... ON CONFLICT (id) DO UPDATE SET col_a = EXCLUDED.col_a, col_b = EXCLUDED.col_b, col_c = EXCLUDED .col_c;
- 还有别的吗?
【问题讨论】:
标签: sql postgresql