一个字段可能对应多行数据,用GROUP_CONCAT函数实现多行数据合并成一行,并用指定分隔符进行分割。
例如:角色数据表(frame_role)中的角色排序字段(ordernumber)、角色名称字段(rolename),使用以下SQL进行查询:
select ordernumber,rolename from frame_role order by ordernumber desc;
查询出来的列表为图1所示:
1.png
修改过后的SQL语句:
select ordernumber,group_concat(roleguid separator ';') from frame_role group by ordernumber
查询出来的列表为图2所示:
2.png
如果修改后的SQL语句不进行分组查询,则会合并成一行数据:
select ordernumber,group_concat(roleguid separator ';') from frame_role
查询出来的列表为图3所示:
3.png
GROUP_CONCAT()函数解释
- GROUP_CONCAT()中的值为你要合并的数据的字段名;
SEPARATOR 函数是用来分隔这些要合并的数据的;
' '中是你要用哪个符号来分隔; - 必须要用GROUP BY 语句来进行分组管理,不然所有的数据都会被合并成一条记录