为何无法在数据表同一列中使用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
相关产品推荐
相关产品推荐

