黄小水的sql进阶之路之postgresql中的String_agg与contact_ws
目录
- pgsql中的string_agg的用法
- String_agg基础用法介绍
- 引申用法-----string_agg排序
- 引申用法-----array_agg
- 引申用法-----array_agg 去重与排序
- contact_ws基础用法介绍
pgsql中的string_agg的用法
在之前的工作中有这么一项需求需要将数据库中两个字段合在一起展示并要求按照其中一个字段的特定顺序显示,想要做的精简一些就想在sql中完成这些功能,由此用到了string_agg,在此介绍下string_agg的所有用法.`
String_agg基础用法介绍
1.select id, string_agg(name, ‘,’) from A group by id;
id | string_agg
--------+--------------20 | 2230 | 33,11
此处可看出string_agg的表达式:string_agg(expression, delimiter),可理解为将一个表达式转换为字符串,上述例子为标准用法(查询同一id的name并合并起来)
引申用法-----string_agg排序
select id, string_agg(name, ','order by name asc) from A group by id;
在上述例子中若想按照name的顺序排序的话就用上面的这种形式来写,效果如下
id | string_agg
--------+--------------20 | 2230 | 11,33
引申用法-----array_agg
第一个例子中若换成array_agg的方式来写的话应改成:
select id, array_to_string(array_agg(name),’,’) from A group by id;
由此能看出array_agg是把表达式变成一个数组,一般来说会配合array_to_string() 函数使用
引申用法-----array_agg 去重与排序
在例子中的id可以用array_agg来进行去重和去重排序,写法分别如下:
1.select array_agg(distinct id) from A;
array_agg
----+-------{20,30}(1 row)
2.select array_agg(distinct id order by id desc) from A;
array_agg
----+-------{30,20}(1 row)
contact_ws基础用法介绍
在平时学习或者工作中难免会想让两个字段合在一起进行排序,这个时候就需要用到contact_ws这个函数,例子:
select a,b,concat_ws( ‘;’, a, b ) from A order by concat_ws( ‘;’, a, b )
a | b | concat_ws
--------+--------------1 | 2 | 1;23 | 4 | 3;4
需要注意,用concat_ws函数的话是先比较第一个,再比较第二个,按顺序比较
,第一个’'中可以放任何字符
黄小水的sql进阶之路之postgresql中的String_agg与contact_ws相关推荐
- Android进阶之路 - 软键盘中右下角的设置与监听
在项目中,多多少少会遇到修改软键盘右下角按钮的需求,虽然已经写过几次,但是还是觉得在这里专心做个笔记比较放心 ~ 我的那些软键盘Blog ~ Android进阶之路 - 常见软键盘操作行为 Andro ...
- SQL进阶之路03:三值逻辑和NULL
大多数的编程语言都是基于二值逻辑(true,false),而SQL语言采用为三值逻辑(true,false,'unknown'),而这个不确定因素常常导致查询结果并不是理想中的结果.总之存在null那 ...
- 小程序学习笔记--进阶之路
微信公众平台 宣传.自媒体性的的事情.提升自身或企业的影响力.也有一些个人和组织进行卖产品 公众号分类 订阅号 订阅号:为媒体和个人提供一种新的信息传播方式,主要功能是在微信侧给用户传达资讯:(功能类 ...
- 小菜鸟的python进阶之路 ------- for循环打印四种形式的星星
打印四个角的星星 1. * ** *** **** ***** i = 1 while i <= 5:j = 1while j <= i:print("*",end=' ...
- 小菜鸟的python进阶之路 ------- 匿名函数
匿名函数 1.特点:匿名函数的关键字是lambda,冒号前面是形参,冒号后面是返回值 练习1:求1+2+3+4+5 from functools import reduce def add(x,y): ...
- 小菜鸟的python进阶之路 ------- 字符串
字符串 定义方法 字符串的特性 字符串的类型判断(可以补全) 字符串开头和结尾的判断 字符串的操作 1.定义方式 a = 'hello' b = 'what\'s up' c = "what ...
- 简述一下索引的匹配原则_【进阶之路】索引中一些易忽视的点
导言 大家好,我是练习java两年半时间的南橘,下面是我的微信,需要之前的导图或者想互相交流经验的小伙伴可以一起互相交流哦. 这是这篇文章的思维导图,因为用的是免费版的软件,所以有不少水印,需要的可以 ...
- Linq To Sql进阶系列 -目录导航
博客园CLR基础研究团队|CLR团队精品系列|C# 3.0专题 [Linq To Sql进阶系列] 目录导航 1 Linq To Sql进阶系列(一)-从映射讲起 本系列,或多或少,直接或间接依赖入门 ...
- Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别
在上面一篇文章Linq To Sql进阶系列(六)中,我们提到了使用object的动态查询.本文在上文的基础上,再做更加深入的引申.同时修正上文中一些不妥的地方. 1, object的动态查询续 首先 ...
最新文章
- 计算机基础知识易错,事业单位考试计算机基础知识易错试题.doc
- Java中JMX管理器的作用,项目中有什么具体使用?
- 看来美国的霸道不仅仅是针对Lenovo的,SONY也被威胁--索尼被判侵犯专利,PlayStation游戏机销售面临威胁【ZZ】...
- P4768 [NOI2018] 归程(kruskal 重构树)
- json格式与cJSON函数库
- A+B for Matrices 及 C++ transform的用法
- 案例|自建or现成工具?小型创业团队敏捷研发探索
- 数据结构基础(5) --归并排序
- c语言编程实现二叉树的镜像,C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像)...
- 记录使用 Golang math/rand 随机数遇到的坑
- php7 opcode,php7最小化安装 vld扩展安装并查看php代码的opcode ast测试
- 周末巨献:100+诡异的数据集,20万Eclipse Bug、死囚遗言
- 计算机usb端口没反应,usb接口没反应,小编教你电脑usb接口没反应怎么解决
- FTP文件传输神器:8uftp
- php遍历文件夹下文件内容_PHP遍历文件夹下所有文件和文件夹
- 忙活了一周时间,开发了一个年会抽奖系统,免费开放给大家(含操作视频及下载地址)
- matlab中多项式拟合polyfit()和插值函数polyval()的基础使用方法和历程
- Mybatis| Bug合集
- vue中使用AntV G6 — 基础篇
- Detectron2的使用指南