MySQL實現(xiàn)用逗號進行拼接、以逗號進行分割
MySQL用逗號進行拼接、以逗號進行分割
MySQL中,把查詢的結(jié)果拼接成一個字符串。
group_concat 函數(shù)
用法:group_concat (待拼接對象)
輸出:用逗號進行拼接后的字符串
例子:
select group_concat(emp_no) as employees from dept_emp; ? /* 結(jié)果: employees ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | +-------------------------------------------------------------------+ | 10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10010 | +-------------------------------------------------------------------+ */
可以使用MySQL中的字符串拆分函數(shù)實現(xiàn):
substring_index(str,delim,count)
說明:str: 被分割的字符串; delim: 分隔符; count: 分割符出現(xiàn)的次數(shù)
例子:
對于字符串 “209755,209756,209757” ,設(shè)置delim為 “,”,count為1,就會返回 “209755”;
其它參數(shù)不變,count為2,就會返回 “209755,209756”;其它參數(shù)不變,count為-1,就會返回 “209757”。
select colnum_name ,(select substring_index(substring_index(bill_ids,',',1),',',-1)) as bill_id1 ,(select substring_index(substring_index(bill_ids,',',2),',',-1)) as bill_id2 ,(select substring_index(substring_index(bill_ids,',',3),',',-1)) as bill_id3 from table_name;
若不知道要分割的字段究竟有幾個值(如可能某些行就1個值,某些有6個),可以考慮根據(jù)具有最多值的數(shù)量來選擇使用多少條
(select substring_index(substring_index(bill_ids,’,’,第幾個值),’,’,-1))語句,但是會有問題(待解決)
例子:
1 |
2,3,4 |
5,6 |
1 | 1 | 1 |
2 | 3 | 4 |
5 | 6 | 6 |
MySQL多行數(shù)據(jù)用逗號拼接返回一行
解決方案
先說解決辦法,這里使用的是 GROUP_CONCAT 函數(shù),先來實例:
SELECT GROUP_CONCAT( `name` SEPARATOR ',' ) FROM uim_user?
這樣返回的多行數(shù)據(jù)會合并成一行,并且用逗號分割返回.
GROUP_CONCAT簡單闡述
使用語法:
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
一般與group by 分組一起使用,如果不分組默認返回一行
而分組后會把相同分組類型的數(shù)據(jù)返回一行,并且可使用分割符號分割,去重,排序等操作
簡單實例:
這里是按照部門分組,這樣同一個部門的人會返回一行并且用逗號分割
SELECT group_concat( distinct(name) SEPARATOR ',' ) name FROM uim_user group by dept_id
ps:開發(fā)中會有很多種需要合并結(jié)果集的情況,比如要查詢小明這個同學所有科目分數(shù)返回一行,這樣使用來達到返回數(shù)據(jù)的要求。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql數(shù)據(jù)庫詳解(基于ubuntu 14.0.4 LTS 64位)
這篇文章主要介紹了mysql數(shù)據(jù)庫詳解(基于ubuntu 14.0.4 LTS 64位),具有一定借鑒價值,需要的朋友可以參考下。2017-12-12windows2008 64位系統(tǒng)下MySQL 5.7綠色版的安裝教程
這篇文章主要給大家分享了在windows2008 64位系統(tǒng)下MySQL 5.7綠色版的安裝教程,文中將安裝步驟介紹的非常詳細,相信會對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-05-05MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變
這篇文章主要介紹了MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08淺析mysql 共享表空間與獨享表空間以及他們之間的轉(zhuǎn)化
本篇文章是對mysql 共享表空間與獨享表空間以及他們之間的轉(zhuǎn)化進行了詳細的分析介紹,需要的朋友參考下2013-06-06