无法在mysqli中选择包含多个值的行

无法在mysqli中选择包含多个值的行,mysql,sql,database,stored-procedures,mysqli,Mysql,Sql,Database,Stored Procedures,Mysqli,我在单个单元格的hashTags列中有多个值,如11,12,13,14 CREATE TABLE `product` ( `productId` int(10) unsigned NOT NULL auto_increment, `productName` varchar(100) NOT NULL default '', `hashTags` varchar(255) ....... ) 当我尝试此查询时,它只选择第一个值为true的列,并对其对应的单元格进行查询,那么我如何

我在单个单元格的
hashTags
列中有多个值,如11,12,13,14

CREATE TABLE  `product` (
  `productId` int(10) unsigned NOT NULL auto_increment,
  `productName` varchar(100) NOT NULL default '',
  `hashTags` varchar(255) 
.......
)
当我尝试此查询时,它只选择第一个值为true的列,并对其对应的单元格进行查询,那么我如何继续

SELECT  hashTags  FROM `product` WHERE  hashTags in (11,14);

我想写一个查询,选择包含
14
的行作为它的
标签

,首先,在一列中存储多个值是不好的!看

尝试使用
like
操作符:

+------------+
| hashTags   |
+------------+
| 11,14,12,13|
+------------+
| 13,14,15   |
+------------+
然而,这并不是维护数据的最佳方式,这里描述的理论太多了,但想法如下:

创建一个附加的
HashTag(hashTagId,productId)
表,该表存储特定产品的标记,使用您的示例并假设您的产品具有ID 1,以下行存储的信息与列hashTags中的信息相同

SELECT  hashTags  
FROM `product` 
WHERE hashTags like '%,14,%' 
   or hashTags like '%,14' 
   or hashTags like '14,%' 
   or hashTags like '14'.
现在,要查询标记为11和14的特定产品,请使用如下查询:

HashTags
--------
11  |  1
12  |  1
13  |  1
14  |  1

实际上,为了确保一个产品同时具有两个哈希标记,查询可能会更复杂,但这是一个基本想法。请参阅第一行中的链接。

当我执行like查询时,它会给出包含114和144的结果。关于如何维护特定产品的多个哈希标记值,我已更改了答案。现在试试。那是无法维护的,开始正常化你的DB@EmilioGort你能帮我吗?我只需要维护一篇文章的多个散列标签
SELECT productId, 
       productName, ... 
FROM Product, 
     HashTags 
WHERE HashTag.productId = Product.productId 
  AND HashTag.hashTagId = 14 
   OR hashTagId = 13.