Mysql 查询未给出所需的结果

Mysql 查询未给出所需的结果,mysql,sql,Mysql,Sql,在上面的查询中,如果nrd.nrd\u NRL\u ID,我想更新nrd.NRL\u FIRE\u DATE和nrd.NRL\u NEXT\u FIRE\u DATE=3或nrd.nrd\u NRL\u ID=4. 但它也会更新3号和4号的点火日期和下一个点火日期,这总是正确的: update notification_rule_details nrd SET nrd.NRL_FIRE_DATE=nrl_next_fire_date,nrd.NRL_NEXT_FIRE_DATE=cal_next

在上面的查询中,如果nrd.nrd\u NRL\u ID,我想更新nrd.NRL\u FIRE\u DATE和nrd.NRL\u NEXT\u FIRE\u DATE=3或nrd.nrd\u NRL\u ID=4. 但它也会更新3号和4号的点火日期和下一个点火日期,这总是正确的:

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.NRD_NRL_ID!=3 or nrd.NRD_NRL_ID!=4)

为什么不在以下情况下使用:

and nrd.NRD_NRL_ID!=3 and nrd.NRD_NRL_ID!=4
您可以简单地使用以下选项:

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);

查看此示例是因为您放置了一个ID不是3或4的条件,如果它是3,则非4条件为真,并在任一条件中使用“或”运算符将其更新,其中ID为3,与ID 4相同,因此您可以使用not in作为其他答案或更改或to and。提示:不要在条件中使用
with
not
。它总是会回到现实。因此,使用
+1,记住格式化您的答案,使其可读,查看HIM的相同答案
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);