【发布时间】:2021-12-12 21:16:49
【问题描述】:
我有一张表,其中的状态应根据创建日期进行更改。 我尝试使用 DML 请求来实现这一点,但是通过这样的更新,所有行都会发生更改。 我怎样才能使我的代码更有效地只更改我在 CASE 中指出的那些行?
UPDATE your_day_test t
SET t.status = CASE
WHEN t.create_date < trunc(SYSDATE - 28)
AND t.status = 1 THEN
-2
WHEN t.create_date < trunc(SYSDATE - 7)
AND t.status IN (0, 3) THEN
-1
WHEN t.create_date < trunc(SYSDATE - 42)
AND t.status = -2 THEN
-3
else
t.status
END
WHERE trunc(t.create_date) > trunc(SYSDATE - 42)
AND t.status IN (0, 1, 3, -2);
COMMIT;
【问题讨论】: