语法:
GROUP
_
CONCAT
([DISTINCT] expr [,expr …][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name …]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据。
SQL
代码 复制代码 代码如下:CREATE TABLE student_courses ( student_id INT UNSIGNED NOT NULL, courses_id INT UN
group
_
concat
( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
group
_
concat
函数首先根据
group
by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。
group
_
concat
([distinct] 字段名 [order by 排序字段 asc/desc] [separator ‘分隔符’])将
group
by产生的同一个分组中的
值
连接起来,返回一个字符串结果。
CREATE TABLE `cate` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` char(20) DEFAULT '' COMMENT '分类名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='\u6587\u7ae0\u5206\u7c7b\u8868';
article表:
这个需求需要一个类似于树形的查询结果,我们可以把每个value关联的所有resource_id以某种当时
拼接
起来,只要自己能够找到相应方式拿出来用就行了。经过查询pg
sql
支持的聚合查询,找到一个函数:
聚合函数:string_agg(resource_id, ',')
在数据库运行以下
sql
:
select value, stri
比较抽象,难以理解。
通俗点理解,其实是这样的:
group
_
concat
()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据
group
by指定的列进行分组。
group
_
concat
函数应该是在内部执行了gro
1、
concat
concat
() 函数用于将多个字符串连接成一个字符串。
concat
(string s1, string s2, string s3,…)表示通过s1、s2和s3连接一起
+----+--------+
| id | name |
+----+--------+
| 1 | city |
+----+--------+
CONCAT
(id,’:’,name) = 1:city
2、
concat
_ws
concat
_ws() 指定参数之间的分隔符
concat
_ws(s
My
SQL
中
group
_
concat
函数完整的语法如下:
group
_
concat
([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator 分隔符])基本查询my
sql
> select * from aa;+------+------+| id| name |+------+------+|1 | 10|
GROUP
BY
GROUP
_
CONCAT
() 根据字段进行分组 ,然后将某一个字段所有
值
合并.
GROUP
_
CONCAT
函数实现。
1、
GROUP
_
CONCAT
功能:将
group
by产生的同一个分组中的
值
连接起来,返回一个字符串结果。
2、语法:
group
_
concat
( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
说明:通过使用distinct可以排除重复
值
;如果希望对结果中的
值
进行排序,可以使用order by子句;