PHP*_*ver 3 mysql sql not-operator
我在 MySQL 中运行以下查询:
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';
Run Code Online (Sandbox Code Playgroud)
它返回了我完全正确的预期结果。
之后我运行以下查询:
SELECT * FROM Customers
WHERE NOT (Country='Germany' AND Country='USA');
Run Code Online (Sandbox Code Playgroud)
这次它返回了表中存在的所有记录SELECT * FROM Customers;(查询的结果集)
我不明白为什么 NOT 运算符在第二个带括号的查询中不起作用?
您可以访问此链接并检查:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_where_not_and
Run Code Online (Sandbox Code Playgroud)
你被操作员优先级所困扰了。你瞧,括号是你的朋友。
WHERE NOT Country='Germany' AND NOT Country='USA';
Run Code Online (Sandbox Code Playgroud)
实际上意味着,因为 NOT 优先于 AND:
WHERE (NOT Country='Germany') AND (NOT Country='USA');
Run Code Online (Sandbox Code Playgroud)
由于“NOT a=b”是“a!=b”,这意味着:
WHERE Country!='Germany' AND Country!='USA';
Run Code Online (Sandbox Code Playgroud)
正如其他人指出的那样,它看起来更好,如下所示:
WHERE Country NOT IN ('Germany', 'USA');
Run Code Online (Sandbox Code Playgroud)
现在,下一个话题。这个:
WHERE NOT (Country='Germany' AND Country='USA');
Run Code Online (Sandbox Code Playgroud)
国家不能同时是德国和美国,因此 () 内的内容始终为 FALSE,因此这相当于:
WHERE NOT (FALSE);
Run Code Online (Sandbox Code Playgroud)
IE
WHERE TRUE;
Run Code Online (Sandbox Code Playgroud)
即,你得到了整张桌子。
| 归档时间: |
|
| 查看次数: |
3475 次 |
| 最近记录: |