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