我想选择与一个或多个条件匹配的行。
示例表和数据
#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,因为三者都有财务)。
由于用户输入将是一个字符串(体育,金融等),我只是根据不同的输入进行查询。
答案 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%'