postgresql中sql高级特性
2021/10/15 2:14:38
本文主要是介绍postgresql中sql高级特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
--with查询
1.CTE(common table expression),在复杂查询中定义一个辅助语句(可理解为在查询中定义一个临时表),常用于复杂查询或递归查询
postgres=# with t as (select generate_series(1,3)) select * from t; generate_series ----------------- 1 2 3 (3 rows) 如果有多个得使用with A as (),B as () select **** from ;
2.递归查询使用CTE(union all是将两个select语句的结果求并集。 union是将union all的结果下再去除重复数据)
with查询的一个重要属性recursive,使用recursive引用自己的输出从而实现递归,一般用于层次结构或树状结构
x从1开始,union+1后的值,循环直到5结束,之后计算X的总和
postgres=# with recursive t (x) as (select 1 union select x+1 from t where x<5) select sum(x) from t; sum ----- 15 (1 row)
层次数字递归应用场景
构造测试表数据
postgres=# select * from test_area order by id; id | name | fatherid ----+--------+---------- 1 | 中国 | 0 2 | 辽宁 | 1 3 | 山东 | 1 4 | 沈阳 | 2 5 | 大连 | 2 6 | 济南 | 3 7 | 和平区 | 4 8 | 沈河区 | 4 (8 rows)
查询检索ID为7及以上父节点,将结果输出name字段合并为“中国辽宁沈阳和平区”,这里通过string_agg实现
postgres=# with recursive r as (select * from test_area where id=7 postgres(# union all postgres(# select test_area.* from test_area,r where test_area.id = r.fatherid) postgres-# select string_agg(name,'') from (select name from r order by id) n; string_agg -------------------- 中国辽宁沈阳和平区 (1 row)
ostgres=# with recursive r as (select * from test_area where id=10 union all select test_area.* from test_area,r where test_area.id = r.fatherid) select string_agg(name,'') from (select name from r order by id) n; string_agg ---------------- 中国重庆永川区 (1 row) postgres=# select * from test_area order by fatherid; id | name | fatherid ----+--------+---------- 1 | 中国 | 0 9 | 重庆 | 1 3 | 山东 | 1 2 | 辽宁 | 1 4 | 沈阳 | 2 5 | 大连 | 2 6 | 济南 | 3 7 | 和平区 | 4 8 | 沈河区 | 4 10 | 永川区 | 9 (10 rows)
这篇关于postgresql中sql高级特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-05快速清空 PostgreSQL 数据库中的所有表格,让你的数据库重新焕然一新!
- 2024-01-04在PostgreSQL中创建角色:判断角色是否存在并创建
- 2023-05-16PostgreSQL一站式插件推荐 -- pg_enterprise_views
- 2022-11-22PostgreSQL 实时位置跟踪
- 2022-11-22如何将PostgreSQL插件移植到openGauss
- 2022-11-11PostgreSQL:修改数据库用户的密码
- 2022-11-06Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务
- 2022-10-27Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务
- 2022-10-11PostgreSql安装(Windows10版本)
- 2022-09-13PostgreSQL-Network Address类型操作和函数