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

为何无法在数据表同一列中使用AND运算符查询多指定值?

问题:AND运算符查询无结果的原因

数据表内容

ProductName // SupplierID // CategoryID
Chai               1                   1
Chang              1                   1
Aniseed Syrup      1                   2

需求与错误SQL

想要仅查询ProductName为'Chai'和'Chang'的记录,执行了以下SQL语句:

SELECT * FROM table_name
WHERE ProductName = 'Chai' AND ProductName = 'Chang'; 

查询能成功执行但无结果返回,使用OR运算符则可正常返回目标记录,请问为何AND运算符无法生效?


解答

这是因为AND运算符的逻辑是“同时满足所有条件”——单条记录的ProductName字段只能存储一个值,要么是'Chai',要么是'Chang',不可能同时等于这两个不同的值,所以这条WHERE条件永远无法成立,自然查不到任何结果。

而OR运算符的逻辑是“满足任意一个条件即可”,只要记录的ProductName是'Chai'或者'Chang',就能匹配成功,所以能返回你需要的两条目标记录。

另外,还有更简洁的写法可以实现相同需求,使用IN运算符:

SELECT * FROM table_name
WHERE ProductName IN ('Chai', 'Chang');

它的效果和用OR完全一致,而且当需要匹配的取值数量较多时,代码会更简洁易读。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:50:39