MySQL选择其中列仅包含集合值的行

时间:2014-04-01 21:32:29

标签: mysql sql rows

有没有办法选择其中一列只包含预定义值的行?我一直在使用它,但它会返回我的列中至少包含一个值的任何行(这正是它所要做的,我知道)。但我正在寻找一种方法来只选择关键字列中只包含我的关键字的行。

SELECT * 
FROM 
    `products`.`product` 
WHERE 
    keywords LIKE '%chocolate%' 
AND keyword LIKE '%vanilla%';

我正在寻找能够做到这一点的事情

SELECT * 
FROM 
   `products`.`product` 
WHERE 
   keywords **ONLY** LIKE '%chocolate%' 
OR keyword LIKE '%vanilla%';

我试图用这个问题最有意义,希望有人为我提供神奇的解决方案!

UPDATE /实施例: 关键词:巧克力,糖,牛奶,燕麦

使用上面的关键字,我希望返回前两个结果,但不是最后两个:

产品1:巧克力,糖 产品2:巧克力 产品3:巧克力,糖,牛奶,燕麦,麸皮 产品4:巧克力,糖,盐

我的专栏包含一个逗号分隔的列表,列出了适用于该产品行的所有关键字。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM `products`.`product` WHERE keywords = 'chocolate' OR keyword = 'vanilla';

根据您提供的信息,您可以做您想做的事情 - 还是有更多信息?

答案 1 :(得分:0)

这个怎么样:

SELECT *
 FROM `products`.`product`
 WHERE (keywords LIKE '%chocolate%' AND keyword NOT LIKE '%vanilla%')
 OR (keywords NOT LIKE '%chocolate%' AND keyword LIKE '%vanilla%');