首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与字段的一个或多个条件匹配的查询行

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

Stack Overflow用户
提问于 2013-01-01 05:59:00
回答 2查看 76关注 0票数 0

我希望选择与一个或多个条件相匹配的行。

示例表和数据

代码语言:javascript
复制
#ID #NAME #KEYWORDS(Varchar)


1 BBC   news,finance

2 CNN   music,finance,sports

3 CNBC  music,sports,finance

用户搜索条件将是sports,finance (可以是多个由逗号分隔的关键字),在查询前将其准备为关键字字符串列表。

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

代码语言:javascript
复制
SELECT * from channel where Keywords LIKE '%sports%' OR '%finance%';

但是当我像下面这样使用sql(2)时,请向BBC、CNN、CNBC显示。

代码语言:javascript
复制
SELECT * from channel where Keywords LIKE '%finance%' OR '%sports%'

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-01 06:04:08

代码语言:javascript
复制
SELECT *
FROM table1
WHERE FIND_IN_SET('finance', keywords) or
      FIND_IN_SET('sports', keywords)
  • SQLFiddle演示

或者使用LIKE

代码语言:javascript
复制
SELECT * 
from table1 
where Keywords LIKE '%sports%' OR 
      Keywords LIKE '%finance%'
  • SQLFiddle演示
票数 0
EN

Stack Overflow用户

发布于 2013-01-01 06:06:22

与其使用OR,不如使用Union查询。多个查询或查询需要更多的时间来执行。

代码语言:javascript
复制
SELECT *
FROM channel
WHERE FIND_IN_SET('finance', keywords) 
UNION
SELECT *
FROM channel
      FIND_IN_SET('sports', keywords)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14108189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档