以下是样本数据:
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 | 其结果如下:
FamID|Dad |Mom |Son |
------------------------------
1 |John |Bonnie |Ron |下面是对我正在做的工作的一个示例查询:
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')`此查询正在排除不应排除的结果。我的语法错了吗?
发布于 2014-12-26 23:07:03
这里你需要的是:
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' )
) 这在逻辑上与以下几点相同:
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' )
) 发布于 2014-12-26 23:08:03
在您的where条款中,您排除了"john“,因此您将不会得到您想要的。除了以错误的方式获取数据之外,还必须依赖于familyID。假设您的表中有数千条记录,您会添加上千条条件吗?!这是一个星期。永远不要依赖文本,总是尝试使用id。
https://stackoverflow.com/questions/27662739
复制相似问题