(免责声明:此数据库中没有实名。数据库来自GCF(Goodwill Community Foundation,一个受人尊敬的组织)在线免费提供的教程数据库来源)
我在数据库查询中得到了意想不到的结果。
我知道我做错了什么。我需要你对我做错了什么的建议。
第 1 部分:有效
下面的查询按预期工作。
(更新) 用简单的英语:“给我名字,姓氏,城市,其中((名字以“a”开头,城市是“raleigh”)或(名字以“d”开头,城市不是“教堂山”))“
查询:
结果:
第 2 部分:这行不通
(更新) 用简单的英语:“给我名字,姓氏,城市,其中((名字以“a”开头,城市是“raleigh”)或(名字以“d”开头,城市是不是“教堂山”)或(名字以“d”开头且城市不是“cary”)“
在下面的查询中,我仍然看到来自城市“Chapel Hill”和“Cary”的结果。所以它没有按预期工作。
查询:
结果:
第 2 部分我做错了什么?
提前致谢。
它做的正是它应该做的。
你的第二行和第三行基本上是
(LIKE d* AND NOT foo) OR (LIKE d* AND NOT bar)
与布尔代数:
Distributivity of ∧ over ∨: x ∧ ( y ∨ z ) = ( x ∧ y ) ∨ ( x ∧ z )
这变成:
LIKE d* AND (NOT foo OR NOT bar) =
LIKE d* AND NOT (foo AND bar) =
LIKE d* AND NOT False =
LIKE d* AND True =
LIKE d*
所以 d* 线根本没有过滤城市。
我不确定你到底想做什么,但在 SQL 中很可能更容易制定,你可以在 AND 和 OR 周围自由地放置括号,而不是图形查询编辑器。