我正在尝试使用特定信息更新某些行选择。这意味着我不能执行简单的更新语句,而是必须指定我想要更改的行以及我将修改它们的值。简而言之,我想根据相应的 parameterid 更新当前为 null 的日期列;因此,以下陈述似乎合乎逻辑:
UPDATE contactparameter
SET effectiveto = CASE parameterid
When '2887' Then '13-Aug-2012'
When '2896' Then '21-Feb-2012'
When '3008' Then '28-Oct-2012'
When '3272' Then '18-Jan-2013'
END
如果我随后更新,则所有未包含在此列表中的行,即参数 ID 不是“2887”、“2896”、“3008”或“3272”的所有行都将被清空。我尝试在子查询中选择要更新的行:
UPDATE contactparameter
SET effectiveto = CASE parameterid
When '2887' Then '13-Aug-2012'
When '2896' Then '21-Feb-2012'
When '3008' Then '28-Oct-2012'
When '3272' Then '18-Jan-2013'
END
WHERE exists
(SELECT cp.parameterid
from contact c
INNER JOIN contactparameter cp on c.serialnumber = cp.serialnumber
WHERE cp.effectivefrom is not null
and cp.effectiveto is null)
但这完全一样。我在使用 SQL 方面仍然相当缺乏经验,而且我确信我在某处遗漏了一个关键元素。能否请你帮忙?