Mysql在哪里像确切的数字?

时间:2016-01-19 09:22:45

标签: mysql

我有多选择树类别表

-- id | title  | parentids
-- 1  | black  | 22
-- 2  | white  | 1,3
-- 22 | red    | 1,2

查询:

SELECT * FORM table WHERE parentids LIKE '%2%' 

返回: 黑色红色

我的目标:,因为parentids分组数组我需要它只返回红色

非常感谢任何想法

1 个答案:

答案 0 :(得分:4)

正确的方式:

规范化您的结构,因为现在它是层次结构和csv列的组合。

第一范式 - >列中的数据是原子的

您的样本数据包含周期(可能不是预期的):

enter image description here

你应该瞄准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