问题描述
|
我有需要在数据库中查找的项目列表(用逗号分隔)。最初,我是分别查找每个商品代码,但是必须有一种更简单的方法来执行。
我在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)