作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MySQL 中运行以下查询:
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';
它返回了完全正确的预期结果。
之后我运行以下查询:
SELECT * FROM Customers
WHERE NOT (Country='Germany' AND Country='USA');
这次它返回了表中的所有记录(查询的结果集SELECT * FROM Customers;
)
我不明白为什么 NOT 运算符在带括号的第二个查询中不起作用?
您可以转到此链接并检查:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_where_not_and
最佳答案
您被运算符优先级咬伤了。括号是你的 friend ,你看。
WHERE NOT Country='Germany' AND NOT Country='USA';
实际上意味着,因为 NOT 优先于 AND:
WHERE (NOT Country='Germany') AND (NOT Country='USA');
因为“NOT a=b”是“a!=b”,这意味着:
WHERE Country!='Germany' AND Country!='USA';
正如其他人指出的那样,这样看起来更好:
WHERE Country NOT IN ('Germany', 'USA');
现在,下一个话题。这个:
WHERE NOT (Country='Germany' AND Country='USA');
国家不能同时是德国和美国,所以 () 里面的东西总是假的,所以这等同于:
WHERE NOT (FALSE);
即
WHERE TRUE;
即,您得到整张 table 。
关于mysql - NOT 运算符能否处理括号中出现的多个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125938/
我是一名优秀的程序员,十分优秀!