0

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

示例表和数据

#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,因为这三个都有金融)。

由于用户输入将是 String(sports,finance,etc) ,我只是根据不同的输入进行查询。

4

2 回答 2

1

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

SELECT *
FROM channel
WHERE FIND_IN_SET('finance', keywords) 
UNION
SELECT *
FROM channel
      FIND_IN_SET('sports', keywords)
于 2013-01-01T06:06:22.790 回答
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%'
于 2013-01-01T06:04:08.767 回答