3、postgresql中递归\CTE\WITH\INSERT\COPY

with查询(common table expressions)

目的:简化sql减少嵌套,可理解为在查询中定义了临时表,递归查询

with查询
postgres=# with test as (select generate_series(1,5)) select * from test;
 generate_series 
-----------------
               1
               2
               3
               4
               5
(5 rows)

在这里插入图片描述

CTE递归查询

创建表并插入测试数据:表 funds 来存储基金和它们持有的子基金信息

假设我们有3个基金,其中基金2和基金3是基金1的子基金,基金3又持有基金2:

CREATE TABLE funds (
    fund_id SERIAL PRIMARY KEY,
    fund_name VARCHAR(255),
    parent_fund_id INTEGER REFERENCES funds(fund_id)
);
INSERT INTO funds (fund_name, parent_fund_id) VALUES
('基金A', NULL), -- 基金A是顶级基金
('基金B', 1),    -- 基金B是基金A的子基金
('基金C', 1);    -- 基金C也是基金A的子基金

UPDATE funds SET parent_fund_id = 3 WHERE fund_id = 2;-- 基金C持有基金B

pos
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值