You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何MySQL中使用<>与OR逻辑的查询返回所有条目?

问题解析:为什么OR条件会返回所有条目?

你遇到的问题核心是逻辑运算符OR的特性和<>(不等于)组合后的逻辑结果,我们一步步拆解:

1. 逻辑运算符OR的规则

OR表示只要任意一个条件为真,整个表达式就为真。也就是说,只要两个条件里有一个成立,该行就会被筛选出来。

2. 逐个分析不同main值的情况

不管某行的main是什么值,你的条件main <> 'soda' OR main <> 'iced tea'永远为真:

  • 如果main = 'soda':main <> 'soda'为假,但main <> 'iced tea'为真 → OR结果为真,该行被选中。
  • 如果main = 'iced tea':main <> 'iced tea'为假,但main <> 'soda'为真 → OR结果为真,该行被选中。
  • 如果main是其他值(比如柠檬汁、威士忌等):两个条件都为真 → OR结果为真,该行被选中。

所以无论main是什么,这个WHERE子句的结果都是真,自然会返回表中所有条目。

3. 正确筛选“不含这两种配料”的写法

你提到的AND才是正确的选择,因为AND要求两个条件同时为真,也就是:

SELECT drink_name FROM easy_drinks WHERE main <> 'soda' AND main <> 'iced tea';

这个条件表示:main既不等于soda,同时也不等于iced tea,只有满足这个的行才会被筛选出来。

或者也可以用NOT IN来简化写法,逻辑和上面的AND完全一致:

SELECT drink_name FROM easy_drinks WHERE main NOT IN ('soda', 'iced tea');

内容的提问来源于stack exchange,提问作者maverickar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:20:29