concat、concat_ws、group_concat都可以用来连接字符串。
concat和concat_ws用来连接同一行中不同列的数据,group_concat用来连接同一列的数据。
格式如下:
- concat(str1, str2, ...)
例如:select CONCAT('a','b','c','d'); 结果为 abcd
- concat_ws(separator, str1, str2, ...)
例如:select CONCAT_WS('-','a','b','c','d') 结果为 a-b-c-d
- group_concat([distinct] 列名 [order by 列名 desc/asc] [separator 分隔符])
group_concat一般和group by 子句配合使用,将group by 产生的同一分组中的值连接起来,返回一个字符串结果。
- select name, group_concat(id) from tb1 group by name -- 将相同name的所有id连接起来
- select name, group_concat(id order by id desc separator '-' ) from tb1 group by name -- 将相同name的所有id连接起来,并降序排序,连接符为-
- select name, group_concat(concat_ws('-', id, score)) from tb1 group by name -- 将相同name的所有id和score连接起来