1 有时候我们会需要将多条数据根据一些特别的字段做一些合并。比如下面这个查询,正常会查询出3条数据,但是我们会希望根据create_by 分成两列显示
2 这时候需要用到string_agg函数,先通过group by分组,在进行合并,当然查询结果需要满足group by的限制;sql语句:
select create_by,string_agg(videoname,',') as videonames from w008_video_addr_info where id in (4248,538,546)
group by create_by
查询结果:
3 复杂一些的应用场景(子查询):
下面的语句是我用来查询一个学生在什么时间看了哪些视频:
select
sa.id,
info.nickname,
(select string_agg(v.videoname,',')
from w008_school_assign_video sv
join w008_video_addr_info v on sv.videoaddrinfo =v.id
where sv.schoolassignment=sa.id and v.is_removed=0 and sv.is_removed=0
group by v.is_removed) as videos,
(select string_agg(to_char(sv.create_date, 'MM-DD HH24:MI'),',')
from w008_school_assign_video sv
join w008_video_addr_info v on sv.videoaddrinfo =v.id where
sv.schoolassignment=sa.id and v.is_removed=0
and sv.is_removed=0 group by v.is_removed) as viewtime
from w008_school_assignment sa
join w008_user_business_info info on sa.userlongid=info.id where sa.shchoolworkid=2514505674916356
当然,string_agg(field,'分隔符');分隔符可以填写其他任意的字符,方便后期处理即可;
select
string
_
agg
( id||'' , ',')from userwhere id <8
3、array_to_
string
--将sql中的数组转为字符串,array_
agg
--将sql中...
string
_
agg
,array_
agg
这两个
函数
的功能大同小异,只不过
合并
数据的类型不同。
https://www.
postgresql
.org/docs/9.6/static/functions-
agg
regate.htmlarray_
agg
(expression)
把表达式变成一个数组 一般配合 array_to_
string
()
函数
使用
string
_
agg
(expression, de
在SQL中,拼接多个数据列成为一列是很常见的需求,在SQL中有很多
函数
可以实现这个需求,例如concat、concat_ws、case和coalesce等
函数
。在使用这些
函数
时,需要注意空值的处理,以及要拼接的字符串的格式和分隔符。
1、博客:
PostgreSQL
的学习心得和知识总结(六十八)|内核级自上而下完美实现
PostgreSQL
数据库 限制特定客户端特定时间段的DDL操作 的实现方案
2、https://rng-songbaobao.blog.csdn.net/article/details/123755296
3、
PostgreSQL
内核14.1
4、限制特定的客户端 这里特指IP地址;限制特定时间段 [起始时间,结束时间];限制DDL操作
2017新增了
string
_
agg
函数
,可以轻松实现分组
合并
字符串,而不是用xml path,或者写个自定义
函数
来实现。
STRING
_
AGG
( expression, separator ) [ ]
WITHIN GROUP ( ORDER BY [ ASC | DESC ] )
有2个参数,第1个是要合
目录pgsql中的
string
_
agg
的用法
String
_
agg
基础用法介绍引申用法-----
string
_
agg
排序引申用法-----array_
agg
引申用法-----array_
agg
去重
与排序contact_ws基础用法介绍
pgsql中的
string
_
agg
的用法
在之前的工作中有这么一项需求需要将数据库中两个字段合在一起展示并要求按照其中一个字段的特定顺序显示,想要做的精简一些就想在...
select
string
_
agg
(behavior_code,'<br />') as behavior_code,factor_code
from t_evaluation_behavior
group by factor_code order by factor_code;
函数
的快捷方式,在 SQL Server 中则为。你想将多列的值
合并
为一列。使用数据库中的内置
函数
来串联多列的值。这些数据库把双竖线作为串联运算符。
函数
可以串联多列的值。表,并获得如下结果集。然而,你需要的数据来自。
create table tb(col1 varchar(10),col2 varchar(10),col3 varchar(10),col4 varchar(10))goinsert tb select 11111 , 222 , A , 1 insert tb select 1111 , 333 , A , 1 insert