MySQL中g(shù)roup_concat函數(shù)深入理解
更新時(shí)間:2012年11月14日 16:28:43 作者:
本文通過(guò)實(shí)例介紹了MySQL中的group_concat函數(shù)的使用方法,需要的朋友可以適當(dāng)參考下
本文通過(guò)實(shí)例介紹了MySQL中的group_concat函數(shù)的使用方法,比如select group_concat(name) 。
MySQL中g(shù)roup_concat函數(shù)
完整的語(yǔ)法如下:
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
基本查詢
mysql> select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 rows in set (0.00 sec)
以id分組,把name字段的值打印在一行,逗號(hào)分隔(默認(rèn))
mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)
以id分組,把name字段的值打印在一行,分號(hào)分隔
mysql> select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500 |
+------+----------------------------------+
3 rows in set (0.00 sec)
以id分組,把去冗余的name字段的值打印在一行,
逗號(hào)分隔
mysql> select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20 |
|3 | 200,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)
以id分組,把name字段的值打印在一行,逗號(hào)分隔,以name排倒序
mysql> select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,20,10 |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)
使用group_concat_max_len系統(tǒng)變量,你可以設(shè)置允許的最大長(zhǎng)度。 程序中進(jìn)行這項(xiàng)操作的語(yǔ)法如下,其中 val 是一個(gè)無(wú)符號(hào)整數(shù):
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已經(jīng)設(shè)置了最大長(zhǎng)度, 則結(jié)果被截至這個(gè)最大長(zhǎng)度。
將環(huán)境變量group_concat_max_len 增大。默認(rèn)是1024.我就設(shè)置了session級(jí)的環(huán)境變量將其變?yōu)?048(不夠用再加大)。解決該問(wèn)題
MySQL中g(shù)roup_concat函數(shù)
完整的語(yǔ)法如下:
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
基本查詢
mysql> select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 rows in set (0.00 sec)
以id分組,把name字段的值打印在一行,逗號(hào)分隔(默認(rèn))
mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)
以id分組,把name字段的值打印在一行,分號(hào)分隔
mysql> select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500 |
+------+----------------------------------+
3 rows in set (0.00 sec)
以id分組,把去冗余的name字段的值打印在一行,
逗號(hào)分隔
mysql> select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20 |
|3 | 200,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)
以id分組,把name字段的值打印在一行,逗號(hào)分隔,以name排倒序
mysql> select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,20,10 |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)
使用group_concat_max_len系統(tǒng)變量,你可以設(shè)置允許的最大長(zhǎng)度。 程序中進(jìn)行這項(xiàng)操作的語(yǔ)法如下,其中 val 是一個(gè)無(wú)符號(hào)整數(shù):
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已經(jīng)設(shè)置了最大長(zhǎng)度, 則結(jié)果被截至這個(gè)最大長(zhǎng)度。
將環(huán)境變量group_concat_max_len 增大。默認(rèn)是1024.我就設(shè)置了session級(jí)的環(huán)境變量將其變?yōu)?048(不夠用再加大)。解決該問(wèn)題
相關(guān)文章
mysql備份恢復(fù)mysqldump.exe幾個(gè)常用用例
收集了,一個(gè)整理不錯(cuò)的,mysql備份與恢復(fù)用法2008-08-08如何徹底刪除mysql服務(wù)(清理注冊(cè)表)詳解
這篇文章主要給大家介紹了關(guān)于如何徹底刪除mysql服務(wù)(清理注冊(cè)表)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03MySQL 統(tǒng)計(jì)查詢實(shí)現(xiàn)代碼
MySQL 統(tǒng)計(jì)查詢其實(shí)就是通過(guò)SELECT COUNT() FROM 語(yǔ)法用于從數(shù)據(jù)表中統(tǒng)計(jì)數(shù)據(jù)行數(shù)2014-05-05在MySQL中使用JOIN語(yǔ)句進(jìn)行連接操作的詳細(xì)教程
這篇文章主要介紹了在MySQL中使用JOIN語(yǔ)句進(jìn)行連接操作的詳細(xì)教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05Mysql實(shí)現(xiàn)Oracle中的Start with...Connect by方式
文章總結(jié):作者在遷移數(shù)據(jù)庫(kù)時(shí),使用了Oracle的startwith進(jìn)行樹(shù)的遞歸查詢,但遇到了一些問(wèn)題,通過(guò)搜索和修改,作者成功地使用存儲(chǔ)過(guò)程和預(yù)處理語(yǔ)句來(lái)實(shí)現(xiàn)動(dòng)態(tài)查詢,并解決了變量聲明和預(yù)處理語(yǔ)句的問(wèn)題2024-12-12MySql學(xué)習(xí)心得之存儲(chǔ)過(guò)程
之前總是在MSSQL上寫(xiě)存儲(chǔ)過(guò)程,沒(méi)有在MYSQL上寫(xiě)過(guò),也基本沒(méi)有用過(guò),今天需要用到MYSQL,研究了下,把項(xiàng)目的需要的存儲(chǔ)過(guò)程寫(xiě)了一部分,寫(xiě)一下工作總結(jié)。這里沒(méi)有給出數(shù)據(jù)庫(kù)結(jié)構(gòu),不討論SQL語(yǔ)句的細(xì)節(jié),主要探討存儲(chǔ)過(guò)程語(yǔ)法,適合有基礎(chǔ)的人。2014-06-06