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)