列を条件付きで更新する必要があり、場合によってはまったく更新しないことがあります。これは私がそれを行うことができる最善の方法ですが、列の現在の値で列を更新しているため、ELSEでは効率が悪いようです。ELSEがまったく「何もしない」ことができるより良い方法はありますか?
UPDATE mytable
SET col1 = CASE WHEN (col1 = 20) THEN 10 ELSE col1 END
列を条件付きで更新する必要があり、場合によってはまったく更新しないことがあります。これは私がそれを行うことができる最善の方法ですが、列の現在の値で列を更新しているため、ELSEでは効率が悪いようです。ELSEがまったく「何もしない」ことができるより良い方法はありますか?
UPDATE mytable
SET col1 = CASE WHEN (col1 = 20) THEN 10 ELSE col1 END
適用WHERE
:
UPDATE mytable
SET col1 = 10
WHERE col1 = 20
ただし、更新がより複雑で、実際に複数が必要な場合CASE
は、箇条書きを噛んでを省略するか、更新WHERE
するすべての列を追加する必要があります。WHERE
UPDATE mytable
SET col1 = CASE WHEN (col1 = 20) THEN 10 ELSE col1 END,
SET col2 = CASE WHEN (col2 = 40) THEN 20 ELSE col2 END,
SET col3 = CASE WHEN (col3 = 80) THEN 30 ELSE col3 END
WHERE col1 = 20 OR col2 = 40 OR col3 = 80
これにより、列が不必要に(古い値に)「更新」される可能性がありますが、行は完全ではありません。