我已经看过this问题,它解决了在一个查询中更新多个记录的问题。
一般的解决方案是
UPDATE table_name
SET field_to_update = CASE table_key
WHEN key_value1 THEN field_value1
WHEN key_value2 THEN feild_value2
ELSE feild_to_update
END
WHERE table_key IN(key_value1 , key_value2);
我的问题是谁可以修改它来满足复合键的需要。
(id_1, id_2, column_to_update)
其中,id_1和id_2构成复合主键。
由于其中一个id列对于特定的查询是常量,所以我的问题变得简单了。
例如,我需要一些沿着于
UPDATE table_name
SET field_to_update = CASE (key1, key2)
WHEN (1,1) THEN field_value1
WHEN (2,1) THEN feild_value2
ELSE feild_to_update
END
WHERE (key1, key2) IN ( (1, 1) , (2, 1) );
有人能帮忙吗?
2条答案
按热度按时间wljmcqd81#
不允许在case中使用元组case只允许一个操作数如果您使用元组,例如在您的case中,您会遇到错误“Operand should contain 1 column(s)”,因为有2个操作数
但是你可以用一些操作来覆盖,比如concat(和隐式转换)
nmpmafwu2#
另一种方法