MySQL中g(shù)roup_concat函數(shù)用法小結(jié)
一、group_concat函數(shù)的功能
將group by產(chǎn)生的同一個(gè)分組中的值連接起來,返回一個(gè)字符串結(jié)果。group_concat函數(shù)首先根據(jù)group by指定的列進(jìn)行分組,將同一組的列顯示出來,并且用分隔符分隔。由函數(shù)參數(shù)(字段名)決定要返回的列。例如:
create table emp(
emp_id int primary key auto_increment comment '編號(hào)',
emp_name char(20) not null default '' comment '姓名',
salary decimal(10,2) not null default 0 comment '工資',
department char(20) not null default '' comment '部門'
);
insert into emp(emp_name,salary,department)
values('張晶晶',5000,'財(cái)務(wù)部'),('王飛飛',5800,'財(cái)務(wù)部'),('趙剛',6200,'財(cái)務(wù)部'),('劉小貝',5700,'人事部'),
('王大鵬',6700,'人事部'),('張小斐',5200,'人事部'),('劉云云',7500,'銷售部'),('劉云鵬',7200,'銷售部'),
('劉云鵬',7800,'銷售部');

二、group_concat函數(shù)的語法
group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator ‘分隔符’])
group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])
說明:
(1)使用distinct可以排除重復(fù)值;
(2)如果需要對(duì)結(jié)果中的值進(jìn)行排序,可以使用order by子句;
(3)separator是一個(gè)字符串值,默認(rèn)為逗號(hào)。
1.group_concat(emp_name):只指定了字段名,銷售部有兩個(gè)同名的也全部顯示出來,并且姓名的連接順序就是表中的記錄順序,連接的分隔符為逗號(hào),結(jié)果如下:
select department,group_concat(emp_name) from emp group by department;

select department,group_concat(emp_name SEPARATOR ',') as e_name from emp group by department;

參數(shù)解釋:
- emp_name:要合并的列名。
- SEPARATOR:可選參數(shù),用于指定合并結(jié)果中值之間的分隔符,默認(rèn)為逗號(hào),
添加了distinct參數(shù),則銷售部?jī)蓚€(gè)同名的員工只顯示一個(gè),結(jié)果如下:
select department,group_concat(distinct emp_name) from emp group by department;

4. 添加了order by參數(shù),表中的記錄按salary降序排列,然后再把姓名連接起來,結(jié)果如下:
select department,group_concat(distinct emp_name order by salary desc) from emp group by department;

5.分隔符修改為@符號(hào),結(jié)果如下:
select department,group_concat(distinct emp_name order by salary desc separator '@') from emp group by department;

到此這篇關(guān)于MySQL中g(shù)roup_concat函數(shù)用法小結(jié)的文章就介紹到這了,更多相關(guān)MySQL group_concat函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MYSQL常用字符串函數(shù)和時(shí)間函數(shù)示例詳解
字符串函數(shù)是最常用的的一種函數(shù),在一個(gè)具體應(yīng)用中通常會(huì)綜合幾個(gè)甚至幾類函數(shù)來實(shí)現(xiàn)相應(yīng)的應(yīng)用,這篇文章主要介紹了MYSQL常用字符串函數(shù)和時(shí)間函數(shù)的相關(guān)資料,需要的朋友可以參考下2025-07-07
MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法小結(jié)
create_time通常是一個(gè)用于表示某個(gè)實(shí)體或事件創(chuàng)建時(shí)間的字段,在數(shù)據(jù)庫設(shè)計(jì)、日志記錄或許多軟件系統(tǒng)中常見,它存儲(chǔ)的是一個(gè)日期或時(shí)間戳,記錄了數(shù)據(jù)首次被創(chuàng)建的具體時(shí)刻,本文介紹了MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法,需要的朋友可以參考下2024-08-08
高版本Mysql使用group?by分組報(bào)錯(cuò)的解決方案
GROUP?BY?語句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組,下面這篇文章主要給大家介紹了關(guān)于高版本Mysql使用group?by分組報(bào)錯(cuò)的解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
利用mysql的inet_aton()和inet_ntoa()函數(shù)存儲(chǔ)IP地址的方法分享
當(dāng)前很多應(yīng)用都適用字符串char(15)來存儲(chǔ)IP地址(占用16個(gè)字節(jié)),利用inet_aton()和inet_ntoa()函數(shù),來存儲(chǔ)IP地址效率很高,適用unsigned int 就可以滿足需求,不需要使用bigint,只需要4個(gè)字節(jié),節(jié)省存儲(chǔ)空間,同時(shí)效率也高很多2012-03-03
MySQL處理DB讀寫分離數(shù)據(jù)不一致問題的方案
在互聯(lián)網(wǎng)中大型項(xiàng)目中,讀寫分離應(yīng)該是我們小伙伴經(jīng)常聽說的,這個(gè)主要解決大流量請(qǐng)求時(shí),提高系統(tǒng)的吞吐量,本文給大家介紹了MySQL處理DB讀寫分離數(shù)據(jù)不一致問題的方案,需要的朋友可以參考下2024-02-02
MySQL 如何查詢 JSON 數(shù)組是否包含特定的值
本文給大家介紹MySQL 如何查詢 JSON 數(shù)組是否包含特定的值,假設(shè)定義了一張表 School,其中字段 stages 為 JSON 類型,本文通過實(shí)例代碼給大家詳細(xì)講解,感興趣的朋友一起看看吧2023-11-11

