gpt4 book ai didi

mysql - NOT 运算符能否处理括号中出现的多个条件?

转载 作者:行者123 更新时间:2023-11-29 03:53:44 30 4
gpt4 key购买 nike

我在 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com