mysql 查询某字段中以逗号分隔的字符串的方法
前言
现在有如下场景。我们有一个案例表。每一个案例对应多个标签,一个标签对应一个案例。我们在前台做分页的时侯,需要对多个标签进行与匹配
表数据结构如下
一、首先讲一个需求
需要查出crowd_label_id 为 4,6,9的所有case_id 4,6,9为与条件
- 首先查询出对应case_id所有满足的标签 也就是行转列 使用
GROUP_CONCAT
函数 - 查询出来后我们就知道对应的case_id所有的标签。
- 剩下就是如果根据label_id去做匹配了。这时候我们可以用到mysql函数
FIND_IN_SET
来匹配字符串中是否存在指定的标签。当然这一步也可以放到程序中去做判断。
结果上面完美匹配了label_id包含4,9的所有case_id
附上sql
SELECT * FROM (
SELECT case_id,GROUP_CONCAT(crowd_label_id) AS aa FROM weapp_case_label WHERE crowd_label_id IN (4,6,9) GROUP BY case_id
) AS aaa WHERE FIND_IN_SET('4', aa) AND FIND_IN_SET('9', aa)
总结
这里主要的知识点是mysql的行转列,有多行数据如果拼成一列去展示出来。