Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL选择列仅包含集合中的值的行_Mysql_Sql_Rows - Fatal编程技术网

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

MySQL选择列仅包含集合中的值的行,mysql,sql,rows,Mysql,Sql,Rows,是否有方法选择其中一列仅包含预定义值的行?我一直在使用它,但它会返回任何行,其中我的列至少包含一个值,我知道这正是它应该做的。但我正在寻找一种方法,只选择关键字列中只有我的关键字的行 SELECT * FROM `products`.`product` WHERE keywords LIKE '%chocolate%' AND keyword LIKE '%vanilla%'; 我想找点事做 SELECT * FROM `products`.`product

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

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%';
我试着让这个问题变得更有意义,希望有人能给我一个神奇的解决方案

更新/示例: 关键词:巧克力、糖、牛奶、燕麦

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

产品一:巧克力、糖 产品二:巧克力 产品3:巧克力、糖、牛奶、燕麦、麸皮 产品4:巧克力、糖、盐

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

SELECT * FROM `products`.`product` WHERE keywords = 'chocolate' OR keyword = 'vanilla';
从您提供的信息来看,这些信息可以满足您的需求,或者还有更多吗?

关于这一点:

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

只有巧克力而不是其他的巧克力,对吗?与单词完全匹配?您能分享一些示例数据吗?我不确定我是否理解“关键字”列的外观。解释您想要的内容的一个更简单的方法是给出预期结果-并显示可能的3行-一行匹配,两行不匹配。看起来我应该提供更多信息,更新更多细节。谢谢大家的帮助。这是一个正确的想法,但我会使用在运行时填充的关键字列表,它可能会很长。假设我有10个关键字,我想返回一个列表中只包含关键字的产品,但不包含任何数量的关键字。我想,如果我有10个关键字,我想返回一个列表中只包含关键字的产品,但不包含任何数量的关键字。看起来这就是我现在所做的,返回任何包含至少一个关键字的产品。有什么改进吗?谢谢