相关文章推荐
大力的松鼠  ·  Mysql比较日期和时间 - ·  1 周前    · 
豪情万千的上铺  ·  mysql ...·  1 周前    · 
曾经爱过的松树  ·  批量 kill mysql ...·  3 天前    · 
买醉的花卷  ·  [Day 21] 媽! Keras 和 ...·  5 月前    · 
卖萌的枇杷  ·  JUnit assertEquals ...·  1 年前    · 
踢足球的松鼠  ·  python - TypeError: ...·  1 年前    · 
憨厚的松鼠  ·  dart - Flutter ...·  1 年前    · 

使用SQL将多行记录合并成一行实例代码

作者:晓之以理的喵~~

今天同事问了一个需求,就是将多行数据合并成一行进行显示,查询了一些资料,这篇文章主要给大家介绍了关于使用SQL将多行记录合并成一行的相关资料,需要的朋友可以参考下

我们在数据开发的过程中,经常会遇到这样的需求,就是将多行合并为一行,并且用特定字符隔开。

1、数据处理前

2,结果数据展示

3,hive处理方式

在hive里面,用concat_ws函数处理

格式: concat_ws(‘分隔符’,collect_set/collect_list(字段))

参数释义:

  • concat_ws:多行合并一行函数
  • collect_set:合成数组,数据已去重
  • collect_list:合成数组, 数据未去重
SQL脚本:
select school,concat_ws(',',collect_set(name)) from student
group by school;

4,MySQL处理方式

GROUP_CONCAT(字段 分隔符)

注意:MySQL在GROUP_CONCAT函数中,去重需要使用distinct 关键字,如果需要先排序再合并,也可以使用order by 关键字。

select school,GROUP_CONCAT(name,',') from student
group by school;

补充:还有几种扩展

①可以给类别去重

SELECT group_id,GROUP_CONCAT(DISTINCT category) FROM `sqltest` GROUP BY group_id

②给类别排序

SELECT group_id,GROUP_CONCAT(category ORDER BY category DESC) FROM `sqltest` GROUP BY group_id

③给类别更改分隔符