使用许多OR编写SQL查询的更好方法

时间:2011-10-09 16:39:58

标签: mysql sql coding-style

我有一个列表或颜色类别。

Category: Red, Blue, Green, ... //At least 9 for one category

我的MySQL表中有以下条目:

id  |  color
--  |  -----
 1  |  Red
 2  |  Black
 3  |  Green
 4  |  Purple
 .      .
 .      .

我想从我的类别中获得idcolor。他们现在构建我的查询的方式是... WHERE color = 'Red' OR color = 'Blue' OR ...,这将导致OR s的长(至少9)列表。

我想我错过了什么。必须有更好的方法。

2 个答案:

答案 0 :(得分:3)

使用IN。来自文档:

  

expr IN (value,...)

     

如果expr等于IN列表中的任何值,则返回1,否则返回0.

您的查询可以更改为:

WHERE color IN ('Red', 'Blue', ... )

答案 1 :(得分:2)

尝试使用关键字

IN

e.g。

SELECT * 
FROM   myTable
WHERE  color IN ('Red', 'Blue')