首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -使用WHERE逻辑

问SQL -使用WHERE逻辑
EN

Stack Overflow用户
提问于 2014-10-30 16:02:28
回答 3查看 76关注 0票数 0

我有3列,让我们称它们为column A、column B和column C,每一列都是日期。

我试着写这样的地方逻辑:

如果A列为NULL或C列日期大于今天的日期,则减去3天

如果B列为NULL或C列日期大于今天的日期,则减去3天

如果C列为NULL或C列日期大于今天的日期,则减去3天

我想出了这个,但当我运行它时,我遗漏了一些东西:

代码语言:javascript
复制
( columnA IS NULL OR columnA >= Dateadd(day, -3, Getdate()) ) 
AND
( columnB IS NULL OR columnB >= Dateadd(day, -3, Getdate()) ) 
AND
( columnC IS NULL OR columnC >= Dateadd(day, -3, Getdate()) )

这造成了冲突,举个例子,我缺少了一个项目,原因如下:

columnA日期小于今天的日期减去3天

columnB日期小于今天的日期减去3天

columnC为空

因此,由于columnC是空的,所以应该出现该项。我做错什么了?

谢谢,

我正在使用2008

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-30 17:01:04

您的问题描述和代码在“更大”-子句的关联中存在差异,因此答案也不是明确的。请明确你的问题,以防万一-也请参阅前一个意见的优化提示。

( a)这应该是对你描述的逻辑正确的回答:

代码语言:javascript
复制
WHERE ( columnA IS NULL OR columnB IS NULL OR columnC IS NULL OR columnC >= Getdate()-3 )

( b)源自您的代码,这应该是逻辑上正确的答案(但尚未优化):

代码语言:javascript
复制
WHERE (   columnA IS NULL OR columnA >= Dateadd(day, -3, Getdate())  
       OR columnB IS NULL OR columnB >= Dateadd(day, -3, Getdate())
       OR columnC IS NULL OR columnC >= Dateadd(day, -3, Getdate()) 
      )
票数 1
EN

Stack Overflow用户

发布于 2014-10-30 16:31:55

听起来你真的很想在子句之间使用OR而不是AND。

代码语言:javascript
复制
( columnA IS NULL OR columnA >= Dateadd(day, -3, Getdate()) ) 
OR
( columnB IS NULL OR columnB >= Dateadd(day, -3, Getdate()) ) 
OR
( columnC IS NULL OR columnC >= Dateadd(day, -3, Getdate()) )
票数 2
EN

Stack Overflow用户

发布于 2014-10-30 16:33:39

如果A列为空,或如果C列日期大于今天,则减去3天,如果B列为空,或如果C列日期大于今天,则为减去3天,如果C列为空,或如果C列日期大于今天,则为-3天

代码语言:javascript
复制
( columnA IS NULL 
                  OR columnC >= 
                     Dateadd(day, -3, Getdate()) ) 
           AND ( columnB IS NULL 
                  OR columnC >= 
                     Dateadd(day, -3, Getdate()) ) 
           AND ( columnC IS NULL 
                  OR columnC >= 
                     Dateadd(day, -3, Getdate()) )

如果您想检索满足所有三个条件的数据,请使用AND,如果您想检索与任何条件匹配的数据,请使用OR而不是AND。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26657816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档