GROUP_CONCAT函数
一对多产生多条数据时, 返回记录会出现一的冗余数据条数, 我们可以把多的列转为行在一条数据中返回, 具体操作如下:
建表 A
字段 id, name, subject
1 王 1,2
2 李 2,3
建表 B
字段 id, sub_name
1 语文
2 数学
3 物理
此时需要得到数据格式
1 王 1,2 语文,数学
2 李 2,3 数学,英语
查询语句如下
select
A.id, A.name, A.subject, GROUP_CONCAT(B.sub_name SEPARATOR ',') AS sub_names
from A
left join B on FIND_IN_SET(B.id, A.subject)
group by A.id, A.name, A.subject
GROUP_CONCAT(字段 SEPARATOR 分隔符)
FIND_IN_SET(字段, 集合) 判断字段是否在集合里