现在有如下场景。我们有一个案例表。每一个案例对应多个标签,一个标签对应一个案例。我们在前台做分页的时侯,需要对多个标签进行与匹配
表数据结构如下
需要查出crowd_label_id 为 4,6,9的所有case_id 4,6,9为与条件
GROUP_CONCAT
函数FIND_IN_SET
来匹配字符串中是否存在指定的标签。当然这一步也可以放到程序中去做判断。附上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的行转列,有多行数据如果拼成一列去展示出来。