MySQL FIND_IN_SET()没有按预期工作

时间:2014-07-29 08:55:57

标签: mysql

我有下表:

... | 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),任何帮助?

1 个答案:

答案 0 :(得分:8)

As per documentation - FIND_IN_SET的第二个参数是逗号分隔的列表。因此,用逗号分割的值10, 4, 7, 1变为以下4个值:

  1. 10
  2. 4 - 空格后跟4
  3. 7 - 空格后跟7
  4. 1 - 空格后跟1
  5. 它们都不等于1

    解决方案:停止使用此方法并规范化架构以使用一对多(或多对多)。