有没有办法在一个查询中有多个IN子句?

时间:2016-01-30 01:38:14

标签: mysql sql

很抱歉,如果已经有人问过这个问题,那就很难搜索。

我有一个列,其中包含“苹果,葡萄,橙,香蕉,梨”之类的单词列表

如果我想查找包含某个单词的行,我会使用如下查询:

SELECT * FROM tablename WHERE 'apple' IN(list_of_words)

但是,我想要做的是查找包含多个单词的所有行。像这样的东西,这是行不通的:

SELECT * FROM tablename WHERE 'apple' IN(list_of_words) AND 'orange' IN(list_of_words)

使用类似的东西:

WHERE list_of_words LIKE "%grape%" AND list_of_words LIKE "%apple%"

也不行,因为它会找到“葡萄柚”和“海棠”

有没有简单的方法可以在SQL中内置这个?

感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用FIND_IN_SET

SELECT * FROM tbl_name WHERE FIND_IN_SET("orange", list_of_words) OR FIND_IN_SET("apple", list_of_words);

注意: list_of_words在每个逗号后都应以逗号分隔,不能有空格才能生效