[英]MS Access SQL Issue with OR and AND Operators
如果满足以下要求,则底部查询的目标是更新FullComplDate字段。 我不确定语句或括号的排列是否有问题,但是我尝试更改语句的顺序并添加括号但没有运气。
这些陈述都是正确的:
AND这两个语句之一是正确的:
相反,正在发生的事情是,满足前三个语句的任何记录都将被更新,而仅满足第四个语句的所有记录都将被更新。
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.