-2
update notification_rule_details nrd SET nrd.NRL_FIRE_DATE=nrl_next_fire_date,nrd.NRL_NEXT_FIRE_DATE=cal_next_fire_date where nrd.NRD_ID=nrl_id and (nrd.NRD_NRL_ID!=3 or nrd.NRD_NRL_ID!=4);

在上面的查询中,如果 nrd.NRL_NRL_ID!=3 或 nrd.NRL_NRL_ID!=4,我想更新 nrd.NRL_FIRE_DATE 和 nrd.NRL_NEXT_FIRE_DATE 但它也会更新 3 和 4 的触发日期和下一个触发日期

4

3 回答 3

2

为什么不使用 Not In:

update notification_rule_details nrd SET nrd.NRL_FIRE_DATE=nrl_next_fire_date,nrd.NRL_NEXT_FIRE_DATE=cal_next_fire_date where nrd.NRD_ID=nrl_id and nrd.NRD_NRL_ID Not In (3,4);
于 2013-08-05T07:33:39.877 回答
1

您可以简单地使用NOT IN()

UPDATE notification_rule_details nrd 
SET nrd.NRL_FIRE_DATE=nrl_next_fire_date 
   ,nrd.NRL_NEXT_FIRE_DATE=cal_next_fire_date 
WHERE nrd.NRD_ID=nrl_id 
AND nrd.NRD_NRL_ID NOT IN(3,4);

请参阅此示例SQLFiddle 演示

于 2013-08-05T07:33:51.127 回答
1

这总是正确的:

(nrd.NRD_NRL_ID!=3 or nrd.NRD_NRL_ID!=4)

你有一个逻辑问题。

也许你想要

and nrd.NRD_NRL_ID!=3 and nrd.NRD_NRL_ID!=4

?

于 2013-08-05T07:30:08.143 回答