我有下表:
... | parents_id | ...
________________________
... | 1, 40, 7 | ...
... | 10, 4, 7, 1 | ...
... | 45, 40, 1, 7 | ...
... | other_rows | ...
现在,我需要获取这三行,我使用此查询SELECT * FROM products WHERE FIND_IN_SET(1, parents_id) > 0
,但我只获得第一行(1, 40, 7
),任何帮助?
答案 0 :(得分:8)
As per documentation - FIND_IN_SET
的第二个参数是逗号分隔的列表。因此,用逗号分割的值10, 4, 7, 1
变为以下4个值:
10
4
- 空格后跟4 7
- 空格后跟7 1
- 空格后跟1 它们都不等于1
解决方案:停止使用此方法并规范化架构以使用一对多(或多对多)。