天天看點

MySQL中group_concat 函數

1. 含義

group_concat

 用在 

group

 分組的時候,連接配接多行的字段拼接在一起。

2. 文法

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

3. 示範

mysql> select * from t1;
+-------+-------+
| id    | name |
+-------+-------+
| 10001 | 沙    |
| 10001 | 石    |
| 10001 | 煤    |
| 10002 | 水    |
| 10002 | 鹽    |
| 10002 | 鹽    |
| 10002 | 鹽2   |
+-------+-------+
           

 把name字段的值列印在一行,逗号分隔(預設)

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

執行SQL:

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

執行結果:

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

執行SQL: 

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(不夠用再加大)。

繼續閱讀