【问题标题】:mysql query to search multiple values in comma separated list with AND clausemysql查询以使用AND子句在逗号分隔列表中搜索多个值
【发布时间】:2013-03-22 02:44:37
【问题描述】:

我有下表

Id     | Userdefined01
------------------------
1      | 1,2,4,5
2      | 2,5
3      | 4,6,8
4      | 1,5

我想编写一个查询来查找 userdefined01 字段中所有值为 2 和 5 的 Id。这可能吗?

【问题讨论】:

  • 在列中存储逗号分隔的数据是个坏主意。你打破了正常化。除非你有充分的理由,否则不要这样做。

标签: mysql sql select


【解决方案1】:

使用FIND_IN_SET() -- mysql 的内置函数来搜索 CSV 中的字符串。

SELECT  *
FROM    tableName
WHERE   FIND_IN_SET('2', Userdefined01) > 0 AND
        FIND_IN_SET('5', Userdefined01) > 0 

如果您有时间更改架构,则需要对其进行非规范化。查看示例,可能是Many-to-Many 关系,因此您可以将其分解为 3 表设计。

【讨论】:

  • 感谢 JW,这行得通。我正在尝试从产品中获取一些报告,并且是以这种方式设计的。无法更改。
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2023-03-16
相关资源
最近更新 更多