首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个和/或查询不能产生正确的结果

多个和/或查询不能产生正确的结果
EN

Stack Overflow用户
提问于 2014-12-26 22:44:28
回答 2查看 63关注 0票数 1

以下是样本数据:

代码语言:javascript
复制
FamID|Dad    |Mom    |Son    |
------------------------------
1    |John   |Mary   |Barry  |
2    |Bob    |Jane   |Donald |
3    |Sam    |Jessica|Sam Jr |
4|   |Jason  |Nancy  |Conway |
5    |Steve  |Sara   |JR     |
6    |John   |Bonnie |Ron    | 

其结果如下:

代码语言:javascript
复制
FamID|Dad    |Mom    |Son    |
------------------------------
1    |John   |Bonnie |Ron    |

下面是对我正在做的工作的一个示例查询:

代码语言:javascript
复制
SELECT 
    * 
FROM 
    Family
WHERE
    (Dad != 'John' AND Mom != 'Mary')
    AND
    (Dad != 'Bob' AND Mom != 'Jane')
    AND
    (Dad != 'Sam' AND Mom != 'Jessica')
    AND 
    (Dad != 'Jason' AND Mom != 'Nancy')
    AND
    (Dad != 'Steve' AND Mom != 'Sara')`

此查询正在排除不应排除的结果。我的语法错了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-26 23:07:03

这里你需要的是:

代码语言:javascript
复制
SELECT *
FROM   Family
WHERE  NOT ( 
             ( Dad = 'John'  AND Mom = 'Mary' )
          OR ( Dad = 'Bob'   AND Mom = 'Jane' )
          OR ( Dad = 'Sam'   AND Mom = 'Jessica' )
          OR ( Dad = 'Jason' AND Mom = 'Nancy' )
          OR ( Dad = 'Steve' AND Mom = 'Sara' ) 
           ) 

这在逻辑上与以下几点相同:

代码语言:javascript
复制
SELECT *
FROM   Family
WHERE  (     
             ( Dad <> 'John'  OR Mom <> 'Mary' )
         AND ( Dad <> 'Bob'   OR Mom <> 'Jane' )
         AND ( Dad <> 'Sam'   OR Mom <> 'Jessica' )
         AND ( Dad <> 'Jason' OR Mom <> 'Nancy' )
         AND ( Dad <> 'Steve' OR Mom <> 'Sara' ) 
       ) 
票数 3
EN

Stack Overflow用户

发布于 2014-12-26 23:08:03

在您的where条款中,您排除了"john“,因此您将不会得到您想要的。除了以错误的方式获取数据之外,还必须依赖于familyID。假设您的表中有数千条记录,您会添加上千条条件吗?!这是一个星期。永远不要依赖文本,总是尝试使用id。

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

https://stackoverflow.com/questions/27662739

复制
相关文章

相似问题

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