使用SQL將多行記錄合并成一行實(shí)例代碼
前言
我們?cè)跀?shù)據(jù)開(kāi)發(fā)的過(guò)程中,經(jīng)常會(huì)遇到這樣的需求,就是將多行合并為一行,并且用特定字符隔開(kāi)。
1、數(shù)據(jù)處理前
2,結(jié)果數(shù)據(jù)展示
3,hive處理方式
在hive里面,用concat_ws函數(shù)處理
格式: concat_ws(‘分隔符’,collect_set/collect_list(字段))
參數(shù)釋義:
- concat_ws:多行合并一行函數(shù)
- collect_set:合成數(shù)組,數(shù)據(jù)已去重
- collect_list:合成數(shù)組, 數(shù)據(jù)未去重
SQL腳本: select school,concat_ws(',',collect_set(name)) from student group by school;
4,MySQL處理方式
GROUP_CONCAT(字段 分隔符)
注意:MySQL在GROUP_CONCAT函數(shù)中,去重需要使用distinct 關(guān)鍵字,如果需要先排序再合并,也可以使用order by 關(guān)鍵字。
select school,GROUP_CONCAT(name,',') from student group by school;
補(bǔ)充:還有幾種擴(kuò)展
①可以給類(lèi)別去重
SELECT group_id,GROUP_CONCAT(DISTINCT category) FROM `sqltest` GROUP BY group_id
②給類(lèi)別排序
SELECT group_id,GROUP_CONCAT(category ORDER BY category DESC) FROM `sqltest` GROUP BY group_id
③給類(lèi)別更改分隔符
SELECT group_id,GROUP_CONCAT(category SEPARATOR '_') FROM `sqltest` GROUP BY group_id
總結(jié)
到此這篇關(guān)于使用SQL將多行記錄合并成一行的文章就介紹到這了,更多相關(guān)SQL多行記錄合并一行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql、Oracle中常用的多表修改語(yǔ)句總結(jié)
這篇文章主要給大家介紹了關(guān)于Mysql、Oracle中常用的多表修改語(yǔ)句的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MySQL 8.0.13設(shè)置日期為0000-00-00 00:00:00時(shí)出現(xiàn)的問(wèn)題解決
這篇文章主要介紹了MySQL 8.0.13設(shè)置日期為0000-00-00 00:00:00時(shí)出現(xiàn)的問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01如何測(cè)試mysql觸發(fā)器和存儲(chǔ)過(guò)程
本文將詳細(xì)介紹怎樣mysql觸發(fā)器和存儲(chǔ)過(guò)程,需要了解的朋友可以詳細(xì)參考下2012-11-11MySQL?數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)
這篇文章主要介紹了MySQL?數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),它是一類(lèi)更具體的可以管理數(shù)據(jù)的軟件。但是實(shí)現(xiàn)數(shù)據(jù)庫(kù)的這個(gè)軟件,需要用到很多的數(shù)據(jù)結(jié)構(gòu),下面來(lái)看看文章是怎么具體介紹這個(gè)數(shù)據(jù)庫(kù)的2021-12-12