SQL - 使用复合键在一个查询中更新多条记录
SQL - Update multiple records in one query with Composite Key
我查看了 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) );
有人可以帮忙吗?
不允许在 case 中使用元组 case allow only one operand if you use a tuple like in your case 你有
错误 "Operand should contain 1 column(s)" 因为是 2 个操作数
但您可以通过一些操作来覆盖,例如 concat(和隐式转换)
UPDATE table_name
SET field_to_update = CASE concat(key1, key2)
WHEN concat(1,1) THEN field_value1
WHEN concat(2,1) THEN feild_value2
ELSE feild_to_update
END
WHERE concat(key1, key2) IN ( concat(1, 1) , concat(2, 1) );
我查看了 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) );
有人可以帮忙吗?
不允许在 case 中使用元组 case allow only one operand if you use a tuple like in your case 你有 错误 "Operand should contain 1 column(s)" 因为是 2 个操作数
但您可以通过一些操作来覆盖,例如 concat(和隐式转换)
UPDATE table_name
SET field_to_update = CASE concat(key1, key2)
WHEN concat(1,1) THEN field_value1
WHEN concat(2,1) THEN feild_value2
ELSE feild_to_update
END
WHERE concat(key1, key2) IN ( concat(1, 1) , concat(2, 1) );