MySQL中group_concat 函數

解釋


group_concat 用在 group 分組的時候,鏈接多行的字段拼接在一塊兒。mysql

語法


完整的語法以下:sql

group_concat([DISTINCT] 要鏈接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

演示

  1. 表數據以下:
mysql> select * from t1;
+-------+-------+
| id    | name |
+-------+-------+
| 10001 | 沙    |
| 10001 | 石    |
| 10001 | 煤    |
| 10002 | 水    |
| 10002 | 鹽    |
| 10002 | 鹽    |
| 10002 | 鹽2   |
+-------+-------+

把name字段的值打印在一行,逗號分隔(默認)session

  • 處理1:合併字段到一行

執行SQL:code

SELECT id, GROUP_CONCAT(`name`) FROM `t1` GROUP BY id;

運行結果以下:排序

+-------+------------------------+
| id    | GROUP_CONCAT(`name`) |
+-------+------------------------+
| 10001 | 沙,石,煤                |
| 10002 | 水,鹽,鹽,鹽2            |
+-------+------------------------+
  • 處理2:合併字段不一樣的值到一行

執行SQL:io

SELECT id, GROUP_CONCAT(DISTINCT `name`) FROM `t1` GROUP BY id;

運行結果以下:變量

+-------+-------------------------------+
| id    | GROUP_CONCAT(DISTINCT `name`) |
+-------+-------------------------------+
| 10001 | 沙,煤,石                       |
| 10002 | 水,鹽,鹽2                      |
+-------+-------------------------------+
  • 處理3:合併字段到一行,且排序

執行SQL:select

SELECT id, GROUP_CONCAT(`name` ORDER BY `name` DESC) FROM `t1` GROUP BY id;

運行結果以下:語法

+-------+--------------------------------------------+
| id    | GROUP_CONCAT(`name` ORDER BY `name` DESC) |
+-------+--------------------------------------------+
| 10001 | 石,煤,沙                                    |
| 10002 | 鹽2,鹽,鹽,水                                |
+-------+--------------------------------------------+

使用group_concat_max_len系統變量,你能夠設置容許的最大長度。 程序中進行這項操做的語法以下,其中 val 是一個無符號整數: SET [SESSION | GLOBAL] group_concat_max_len = val; 若已經設置了最大長度, 則結果被截至這個最大長度。 將環境變量group_concat_max_len 增大。默認是1024.我就設置了session級的環境變量將其變爲2048(不夠用再加大)。解決該問題程序

相關文章
相關標籤/搜索