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

Mysql 查询与字段的一个或多个条件匹配的行,mysql,sql,select,Mysql,Sql,Select,我想选择与一个或多个条件匹配的行 示例表和数据 #ID #NAME #KEYWORDS(Varchar) 1 BBC news,finance 2 CNN music,finance,sports 3 CNBC music,sports,finance 用户搜索条件将是体育、金融(可以是多个用逗号分隔的关键字),我在查询之前将其准备到关键字字符串列表中 当我像下面一样使用sql(1)时,它只选择CNN和CNBC SELECT * from channel where Keyw

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

示例表和数据

#ID #NAME #KEYWORDS(Varchar)


1 BBC   news,finance

2 CNN   music,finance,sports

3 CNBC  music,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,因为这三个都有财经)

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

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

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

使用联合查询比使用或更好。执行多个或多个查询需要更多时间

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

您使用数据库引擎INNODB还是MYISAM?