特定の情報で特定の行の選択を更新しようとしています。つまり、単純な update ステートメントを実行することはできず、代わりに、変更する行とそれらを修正する値を指定する必要があります。つまり、現在 null である日付の列を、対応する parameterid に対して更新したいと考えています。したがって、次のステートメントは論理的に見えます。
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 の使用にかなり不慣れで、どこかで重要な要素が欠けていると確信しています。助けていただけますか?