天天看點

sql concat mysql_SQL 函數:group_concat()

手冊上的解釋:該函數傳回帶有來自一個組的連接配接的非NULL值的字元串結果。

該函數常與group by一起使用,用于顯示分組内的字段資訊。

文法:

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字段的值列印在一行,逗号分隔(預設):

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字段的值列印在一行,分号分隔:

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字段的值列印在一行,逗号分隔:

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字段的值列印在一行,逗号分隔,以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)