我正在尝试运行一个非常简单的MySQL查询,该查询将获取表product_attributes_basic的字段pab_sku(数据类型varchar(255))等于相对较短的值列表的任何行.出于某种原因,此查询返回表中的每一行.
(旁白:我使用的是MySQL Workbench,它适用于更复杂的查询.)
SELECT *
FROM product_attributes_basic
WHERE pab_sku = 'abc' OR 'def';
Run Code Online (Sandbox Code Playgroud)
上面返回整个表中的每一行(几十万).
当我单独查询任一字符串时,不返回任何记录.(这是正确的;这些是无意义的值.)
我试过删除撇号,但这没有效果; 所有行都返回.
这很简单,我对下一步感到茫然.为什么这个查询会返回每一行?
问题是它没有像你期望的那样分裂.
WHERE pab_sku = 'abc' OR 'def';
Run Code Online (Sandbox Code Playgroud)
是不一样的
WHERE pab_sku = 'abc' OR pab_sku = 'def';
Run Code Online (Sandbox Code Playgroud)
你的代码以罗嗦的方式写实际意味着
WHERE pab_sku = 'abc' OR WHERE 'def'
Run Code Online (Sandbox Code Playgroud)
WHERE 'def'然后就像往常一样进行评估True.
因此,您需要明确告诉它您pab_sku在两种情况下都要检查该值.其他人建议使用以下其中一项:
WHERE (pab_sku = 'abc' OR pab_sku = 'def');
WHERE pab_sku IN ('abc', 'def');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |