我有一个表,希望根据某些条件用其他列值中的值替换该列值。
+---------------------+
| Cntry | Code | Value |
+---------------------+
| US | C11 | A |
| US | C12 | B |
| US | C13 | C |
| US | C14 | D |
| US | C15 | E |
| UK | C11 | A |
| UK | C12 | B |
| UK | C13 | C |
| UK | C14 | D |
| UK | C15 | E |
+---------------------+
我想将C14的值替换为基于Cntry的C11的值
所以我的输出应该是这样。
+---------------------+
| Cntry | Code | Value |
+---------------------+
| US | C11 | A |
| US | C12 | B |
| US | C13 | C |
| US | C14 | A |<====Repalce with C11 for US
| US | C15 | E |
| UK | C11 | G |
| UK | C12 | B |
| UK | C13 | C |
| UK | C14 | G |<====Repalce with C11 for UK
| UK | C15 | E |
+---------------------+
在postgresql中有什么方法可以做到这一点吗?
谢谢
2条答案
按热度按时间i7uaboj41#
创建示例数据:
示例查询:
vtwuwzda2#
如果您想实际更改表的内容,那么UPDATE查询就可以了。
出于显而易见的原因,您应该非常小心地使用UPDATE查询。有几种方法可以避免我有时使用的错误:
1.首先尝试SELECT语句以获取我认为要更改的行。如果效果良好,则编辑查询以将SELECT更改为UPDATE
1.制作数据表的副本。在副本上尝试更新。如果您对结果满意,请在原始数据表上尝试查询。使用SELECT INTO建立数据表(
SELECT * INTO tablecopy FROM mytable
),然后在副本上使用DROP TABLE(DROP tablecopy
)。