MySQL流浪记(六)—— CONCAT到GROUP_CONCAT的沿途风景(图文详解)
本文中的案例如下,可以自己測試一下,有問題可以留言哦。
CREATE TABLE staff (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),job_id INT, joindate DATE,salary DECIMAL(7,2) ); INSERT INTO staff(name,job_id,joindate,salary) VALUES ('孫悟空',4,'2000-12-17',8000.00), ('盧俊義',3,'2001-02-20',16000.00), ('林沖',3,'2001-02-22',12500.00), ('唐僧',2,'2001-04-02',29750.00), ('李逵',4,'2001-09-28',12500.00) ('孫悟空',4,'2000-12-17',8000.00), ('林沖',3,'2001-02-22',12500.00);CONCAT
??CONCAT函數用于將兩個字符串連接起來,形成一個單一的字符串。
??語法:CONCAT(str1,str2,)
??輸出:拼接的字符串,如果有任何一個參數為null,則返回值為null。
??這樣簡單粗暴的將三個字符串連接起來,看起來是有一點不美觀,如果用符號連接起來會美觀一些。來試一下。
??可以看出來,將分割符以字符的形式添加到他們之間,這樣就美觀很多了。那么問題來了,現在是三個字符可以很輕松地直接在他們之間添加分隔符 ,如果有一百個字符串呢,有一千個字符串呢,這就是一個比較大的工程了,聰明的前輩們肯定想到了這一點,CONCAT_WS函數就出現了。
CONCAT_WS
??CONCAT_WS和CONCAT函數用法基本是相同的,相當于是CONCAT的一個升級,它省去了CONCAT函數逐一添加分隔符的繁瑣操作,可以一勞永逸的添加分隔符。
??語法:CONCAT_WS(separator,str1,str2,)
??輸出:以separator為分隔符的拼接字符串。分隔符不能為NULL,否則返回NULL
??這樣就很方便的將他們風格,可以說是簡單又美觀。細心的你肯定發現了他們之間有好多重復的信息,比如說“孫悟空”和“李逵”的工號重復了,“盧俊義”和“林沖”的工號頁重復了,這樣說起來還可以變的更美觀一些,于是GROUP_CONCAT就出現了。
GROUP_CONCAT
??GROUP_CONCAT和前面的兩個函數的功能基本上是一樣的,也是將字符進行拼接,不同之處在于它“返回由屬于一組的列值連接組合而成的結果”,也就是說他是將鏈接的字符進行分組后輸出的。
??語法:group_concat( [distinct] 要連接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
??返回:將GROUP BY產生的同一個組的字符進行連接。
??這樣就可以將相同工號的員工分到一組進行輸出,但是這樣還不是很完美,因為有一些人被重復統計了,看來同名同姓的人還不少,可以使用去重函數DISTINCT,然后再進行分組,這樣雖然可以,但是SQL語句不夠簡潔,可以直接再GROUP_CONCAT函數中直接進行去重。
??可以看到,去重的效果還是可以的。既然可以去重了,排序可不可以呢?
??可以發現對他們的名字進行了字典序排序,GROUP_CONCAT還有一個功能就是更改分隔符,它默認的分隔符是“,”。
??到這里就全部將GROUP_CONCAT函數說完了,歡迎大家批評指正。
總結
以上是生活随笔為你收集整理的MySQL流浪记(六)—— CONCAT到GROUP_CONCAT的沿途风景(图文详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言实现大数据除法
- 下一篇: ❤️《10个超级常用Python方法总结