以下是样本数据:
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')`
此查询排除了不应排除的结果。我的语法错了吗?
答案 0 :(得分:3)
以下是您需要的内容:
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' )
)
答案 1 :(得分:0)
在你的where子句中,你排除了“john”,所以当然你不会得到你想要的东西。 除了以错误的方式获取数据之外,您还必须依赖familyID。 假设你的桌子上有成千上万的记录,你会增加千条条件!!这是一周。 永远不要依赖文本总是尝试使用id。