使用SQL將多行記錄合并成一行實例代碼
更新時間:2022年09月13日 09:54:06 作者:曉之以理的喵~~
今天同事問了一個需求,就是將多行數據合并成一行進行顯示,查詢了一些資料,這篇文章主要給大家介紹了關于使用SQL將多行記錄合并成一行的相關資料,需要的朋友可以參考下
前言
我們在數據開發(fā)的過程中,經常會遇到這樣的需求,就是將多行合并為一行,并且用特定字符隔開。
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
③給類別更改分隔符
SELECT group_id,GROUP_CONCAT(category SEPARATOR '_') FROM `sqltest` GROUP BY group_id
總結
到此這篇關于使用SQL將多行記錄合并成一行的文章就介紹到這了,更多相關SQL多行記錄合并一行內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL 8.0.13設置日期為0000-00-00 00:00:00時出現的問題解決
這篇文章主要介紹了MySQL 8.0.13設置日期為0000-00-00 00:00:00時出現的問題解決,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01