MySQL之FIND_IN_SET函数
- 场景:
标签表(t_tag):
id | name |
---|---|
1 | 文学 |
2 | 科技 |
文章表(t_artic),包含tags字段存储标签的id列表,以逗号分隔:
id | title | tags |
---|---|---|
1 | 文学和科技的联想 | 1,2 |
2 | 从科技到文学的思考 | 2,1 |
- 现在需要SQL查询文章列表,每个文章级联其下的多个标签,由于不想建关系表,又想用一条SQL搞定查询,FIND_IN_SET(ele, list)函数能满足要求,其中参数ele是匹配项,list是varchar表示的集合,两个参数类型必须匹配:
SELECT
t.id,
t.title,
g.name
FROM
t_artic AS t,
t_tag AS g
WHERE
FIND_IN_SET(g.id, t.tags);
- Java代码中文章的VO对象定义标签的集合字段,MyBatis ResultMap配置的Collection属性即可。
学习使我充实,分享给我快乐!