假设我有一张这样的 table
ITEM
------
id | Name | idCat
-------------------------
1 Bridgestone A 1,5,11
2. Velg 2,3
3. Bridgestone B 12,4
Category
-----------
idCat | Name
--------------
1 Ban
2. Velg
3. Velg Silver
4. Ban Luar
5. Ban dalam
11. Ban Special
然后例如我想搜索 Velg.. 我只得到 Velg,因为 idCat 有 '2' 而我使用 LIKE '2%'
但问题是..当我搜索 BAn idCat 为 1 时,我得到 普利司通 A 和普利司通 B,因为普利司通 B 有 idCat 12,如果我使用 LIKE '1%' 就会匹配
我的问题是,如何查询以执行仅与“,”分隔匹配的搜索..
抱歉我的英语不好
最佳答案
使用FIND_IN_SET()
SELECT *
FROM tableName
WHERE FIND_IN_SET('1', idCat) > 0
您还应该标准化您的表。在单个字段中存储用逗号分隔的值确实是个坏习惯。
这是建议的新架构设计
项目
- 商品 ID (PK)
- 商品名称
类别
- 类别ID (PK)
- 类别名称
商品类别
- 商品 ID (FK)
- 类别 ID (FK)
关于php - 搜索多个类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15804735/