繁体   English   中英

与OR和AND运算符的MS Access SQL问题

[英]MS Access SQL Issue with OR and AND Operators

如果满足以下要求,则底部查询的目标是更新FullComplDate字段。 我不确定语句或括号的排列是否有问题,但是我尝试更改语句的顺序并添加括号但没有运气。

这些陈述都是正确的:

  1. tblSubscribers.FullComplDate为空
  2. tblSubscribers.SubscrComplDate不为空

AND这两个语句之一是正确的:

  1. tblSubscribers.CoverageLevel =“仅限员工”))
  2. tblSubscribers.CoverageLevel =“ Employee + Child(ren)”

相反,正在发生的事情是,满足前三个语句的任何记录都将被更新,而仅满足第四个语句的所有记录都将被更新。

UPDATE tblSubscribers SET tblSubscribers.FullComplDate = Format(Date(),"mmmm" & " " & "yyyy")
WHERE (((tblSubscribers.FullComplDate) Is Null) AND ((tblSubscribers.SubscrComplDate) Is Not Null) AND (((tblSubscribers.CoverageLevel)="Employee Only")) OR (((tblSubscribers.CoverageLevel)="Employee + Child(ren)")));

我认为问题出在括号中。...如果您退而求其次,只让它们包装OR条件,它应该会更好。

UPDATE tblSubscribers SET tblSubscribers.FullComplDate = Format(Date(),"mmmm" & " " & "yyyy")
WHERE tblSubscribers.FullComplDate Is Null
AND tblSubscribers.SubscrComplDate Is Not Null
AND (tblSubscribers.CoverageLevel="Employee Only" OR tblSubscribers.CoverageLevel ="Employee + Child(ren)")

您可以尝试使用IN子句来避免OR

UPDATE tblSubscribers SET tblSubscribers.FullComplDate = Format(Date(),"mmmm" & " " & "yyyy")
WHERE tblSubscribers.FullComplDate Is Null
AND tblSubscribers.SubscrComplDate Is Not Null
AND tblSubscribers.CoverageLevel IN ("Employee Only" ,"Employee + Child(ren)")

以下应该可以工作(注意括号中最后一个AND / OR的包装):

UPDATE      tblSubscribers 
SET         tblSubscribers.FullComplDate = Format(Date(),"mmmm" & " " & "yyyy")
WHERE       tblSubscribers.FullComplDate Is Null
AND         tblSubscribers.SubscrComplDate Is Not Null
AND         (tblSubscribers.CoverageLevel = "Employee Only"
OR          tblSubscribers.CoverageLevel = "Employee + Child(ren)")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM