MySQL FIND_IN_SET() 未按预期工作

标签 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), 有什么帮助吗?

最佳答案

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

  1. 10
  2. 4 - 空格后跟 4
  3. 7 - 空格后跟 7
  4. 1 - 空格后跟 1

它们都不等于1

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

关于MySQL FIND_IN_SET() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011550/

相关文章:

php搜索帮助

php - 阻止MySQL用空字符串更新列?

php - PDO 对象 : Invalid parameter number: number of bound variables does not match number of tokens

mysql - MAMP - 突然在我的本地主机上收到 404s

MYSQL - 获取一个表中的行在另一个表中有多个行

php - Laravel 搜索工具不提供输出

php - 默认情况下无法使外键获取其引用的 id 值

c# - 从数据库中获取以逗号分隔的 MVC 中每条记录的项目列表?

php - 如何使这个实时验证与我的 sql PDO 一起工作

mysql - 需要 mySQL 查询帮助