MySQL将多条数据合并成一条的完整示例

2023-03-02,,

数据库中存的是多条数据,展示的时候需要合并成一条

数据表存储形式如下图

以type分组,type相同的算一条,且保留image和link的所有数据,用groupby只保留一条数据

解决方案:用group_concat

完整语法如下

group_concat([distinct] 要连接的字段 [order by asc/desc 排序字段] [separator '分隔符'])

select * from testgroup

表结构与数据如上

现在的需求就是每个id为一行 在前台每行显示该id所有分数

group_concat 上场!!!

select id,group_concat(score) from testgroup group by id

可以看到 根据id 分成了三行 并且分数默认用 逗号 分割 但是有每个id有重复数据 接下来去重

select id,group_concat(distinct score) from testgroup group by id

排序

select id,group_concat(score order by score desc) from testgroup group by id

最后可以设置分隔符

select id,group_concat(score separator ';') from testgroup group by id 

 二、多字段如何处理

select id,name,group_concat(concat_ws(',',type,typename) separator ',') typelinks from demo group by id,name;

三、laravel group_concat使用方法

db::raw('group_concat(pp.sku separator ",") sku')

具体代码如下

$list = $this->servicemodel->query()->where($where)
            ->groupby('type')
            ->orderby('update_time','desc')
            ->paginate($this->servicemodel->pagesize, [
                'id',db::raw('group_concat(concat_ws(",",image,link) separator ";") content'),
                'type','modified_user_id','status','create_time','update_time'
            ], "page", $page);
 
$total = $list->total();
$res = $list->items();

每条数据以";"分割,每个字段以“,”分割

总结

到此这篇关于mysql将多条数据合并成一条的文章就介绍到这了,更多相关mysql多条数据合并一条内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!