查询与一个或多个字段条件匹配的行

时间:2013-01-01 05:59:00

标签: mysql sql select

我想选择与一个或多个条件匹配的行。

示例表和数据

#ID #NAME #KEYWORDS(Varchar)


1 BBC   news,finance

2 CNN   music,finance,sports

3 CNBC  music,sports,finance

用户搜索条件为sports,finance (可以使用逗号分隔的多个关键字),我会在查询之前准备好关键字字符串列表。

当我使用下面的 sql(1)时,它只选择CNN和CNBC。

SELECT * from channel where Keywords LIKE '%sports%' OR '%finance%';

但是当我使用下面的 sql(2 )时,请显示BBC,CNN,CNBC。

SELECT * from channel where Keywords LIKE '%finance%' OR '%sports%'

我的要求是我想选择与关键字匹配的所有行(在上面的例子中:体育,金融应该得到BBC,CNN和CNBC,因为三者都有财务)。

由于用户输入将是一个字符串(体育,金融等),我只是根据不同的输入进行查询。

2 个答案:

答案 0 :(得分:1)

最好使用Union查询而不是OR。多个或查询需要更多时间来执行。

SELECT *
FROM channel
WHERE FIND_IN_SET('finance', keywords) 
UNION
SELECT *
FROM channel
      FIND_IN_SET('sports', keywords)

答案 1 :(得分:0)

SELECT *
FROM table1
WHERE FIND_IN_SET('finance', keywords) or
      FIND_IN_SET('sports', keywords)

或使用LIKE

SELECT * 
from table1 
where Keywords LIKE '%sports%' OR 
      Keywords LIKE '%finance%'