我希望选择与一个或多个条件相匹配的行。
示例表和数据
#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,因为所有三个都有财务)。
由于用户输入将是字符串(体育、金融等),我只是根据不同的输入进行查询。
发布于 2013-01-01 06:04:08
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%'发布于 2013-01-01 06:06:22
与其使用OR,不如使用Union查询。多个查询或查询需要更多的时间来执行。
SELECT *
FROM channel
WHERE FIND_IN_SET('finance', keywords)
UNION
SELECT *
FROM channel
FIND_IN_SET('sports', keywords)https://stackoverflow.com/questions/14108189
复制相似问题