我有多选择树类别表
-- id | title | parentids
-- 1 | black | 22
-- 2 | white | 1,3
-- 22 | red | 1,2
查询:
SELECT * FORM table WHERE parentids LIKE '%2%'
返回: 黑色和红色
我的目标:,因为parentids分组数组我需要它只返回红色
非常感谢任何想法
答案 0 :(得分:4)
正确的方式:
规范化您的结构,因为现在它是层次结构和csv列的组合。
第一范式 - >列中的数据是原子的
您的样本数据包含周期(可能不是预期的):
你应该瞄准Adjacency List Model
(如果它应该是等级),例如:
╔════╦═══════╦═══════════╗
║ id ║ title ║ parentid ║
╠════╬═══════╬═══════════╣
║ 1 ║ xxx ║ NULL ║ -- root element
║ 2 ║ yyy ║ 1 ║
║ 3 ║ zzz ║ 2 ║
║ 4 ║ uuu ║ 2 ║
╚════╩═══════╩═══════════╝
解决方法:强>
SELECT * FORM table WHERE FIND_IN_SET('2',parentids) > 0