如何解决MySQL中的布尔运算符
| 我有需要在数据库中查找的项目列表(用逗号分隔)。最初,我是分别查找每个商品代码,但是必须有一种更简单的方法来执行。 我在phpMyAdmin中玩耍,试图选择没有运气的项目。SELECT *
FROM `items`
WHERE `code` = ( 20298622
OR 83843296
OR 46549947 )
没有返回结果。
SELECT *
FROM `items`
WHERE `code` =20298622
OR 83843296
OR 46549947
返回数据库中的每个项目。
我正在阅读MySQL文档,看来OR(或||)应该可以满足我的需求。我哪里做错了?
另外,FWIW,code
是整数字段。
谢谢!
解决方法
你可以用...
SELECT *
FROM `items`
WHERE `code`
IN (20298622,83843296,46549947)
, 失败的原因是因为OR语句将两个条件语句分开。因此,您的第一个条件语句将评估为(code = 20298622
),但随后的下一个语句只是一个数字。如果要使用OR语句,则需要再次指定列名。看起来像这样:
SELECT *
FROM `items`
WHERE `code` = 20298622
OR `code` = 83843296
OR `code` = 46549947
您还可以使用更复杂的语句(例如IN),甚至可以连接第二个表(甚至是临时表)。基本上,有很多方法可以实现此目的。您只需要选择最适合您的情况(速度,易用性等)即可。
, 您使用的语法不正确。您应该将语句更改为:
SELECT *
FROM `items`
WHERE `code` = 20298622
OR `code` = 83843296
OR `code` = 46549947
或者,如@alex在他的答案中所述,您可以使用IN
子句:
SELECT *
FROM `items`
WHERE `code` IN (20298622,46549947)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。