我有一个包含键/值列的表。我需要根据其他值的条件更新键/值对。
表:
--------------------------
| id | key | value |
--------------------------
| 1 | country | canada |
| 2 | privacy | default |
--------------------------
在这种情况下,我需要将value
更改为canada
,其中key = privacy
仅限country = canada
。
我尝试过这样的事情:
UPDATE settings
SET value =
CASE
WHEN key = 'country' AND value = 'canada' THEN 'canada'
ELSE value
END
WHERE key = 'privacy'
但会导致CASE
条件出错。我想我可能需要做一些子查询?
答案 0 :(得分:2)
您的陈述不会起作用,因为您无法获得“隐私”密钥的记录。和' country'。您需要在表格上执行SELECT以检查是否有国家/地区'被设定为加拿大'。以下内容可能有效。
UPDATE settings
SET value = 'canada'
WHERE key = 'privacy'
AND EXISTS(SELECT * FROM (SELECT * FROM settings WHERE key = 'country' AND value = 'canada') AS temp_settings);