postgresql数据库表结构 id,parent_id,name parent_id关联id 查询时 parent_id > 0 则不显示parent_id关联的那条父级记录

时间: 2024-03-03 21:48:28 浏览: 21
可以使用以下 SQL 语句实现: ```sql SELECT t1.* FROM your_table t1 LEFT JOIN your_table t2 ON t1.parent_id = t2.id WHERE t1.parent_id = 0 OR t2.parent_id IS NULL; ``` 这里使用了自连接的方式,将表自身连接两次,然后在 WHERE 子句中过滤出 parent_id 为 0 或者其对应的父级记录不存在的记录。其中,t2.parent_id IS NULL 是为了处理 parent_id 字段为 NULL 的情况。 需要注意的是,这种方式比较消耗性能,如果数据量比较大,建议在表中增加一个字段记录每条记录的层级关系,这样查询的性能会更好。
相关问题

有个postgresql自关联表存储父类子类数据,怎么获取从顶级父类到某个指定子类的路径数据

你可以使用递归查询来获取从顶级父类到指定子类的路径数据。以下是一个示例查询: ```sql WITH RECURSIVE category_path AS ( -- 选择指定子类 SELECT id, name, parent_id FROM categories WHERE id = <指定子类ID> UNION ALL -- 递归查询父类 SELECT c.id, c.name, c.parent_id FROM categories c JOIN category_path cp ON c.id = cp.parent_id ) -- 最终查询路径数据 SELECT id, name FROM category_path ORDER BY id; ``` 在这个查询中,我们使用了一个递归的公共表表达式(RECURSIVE CTE)来获取从指定子类到顶级父类的路径数据。首先,我们选择指定子类作为起始点,然后逐级向上查询父类,直到到达顶级父类。最后,我们按照路径中的ID排序,得到完整的路径数据。 请将`categories`替换为你实际使用的表名,`<指定子类ID>`替换为你要查询的子类的ID。执行以上查询语句,你将会得到从顶级父类到指定子类的路径数据。

pgslq 实现 sys_connect_by_path

在 PostgreSQL 中,可以使用递归查询和字符串聚合函数来模拟 Oracle 的 sys_connect_by_path 函数。下面是一个示例查询,可以实现类似 sys_connect_by_path 的功能: WITH RECURSIVE t AS ( SELECT id, parent_id, name, CAST(name AS TEXT) AS path FROM my_table WHERE parent_id IS NULL UNION ALL SELECT t.id, t.parent_id, t.name, CAST(p.path || '/' || t.name AS TEXT) FROM my_table t JOIN t p ON t.parent_id = p.id ) SELECT id, parent_id, name, path FROM t; 在这个查询中,使用了 WITH RECURSIVE 关键字来进行递归查询。首先查询出所有 parent_id 为 NULL 的记录,然后使用 UNION ALL 将它们与它们的子节点合并在一起。在每个递归步骤中,使用字符串聚合函数将父节点的路径和当前节点的名称拼接在一起。最终返回所有节点的 id、parent_id、name 和路径信息。

相关推荐

DROP TABLE IF EXISTS "pisso_account" CASCADE; DROP SEQUENCE IF EXISTS "pisso_account_id_seq" CASCADE; CREATE SEQUENCE "pisso_account_id_seq"; grant select,update on sequence pisso_account_id_seq to lfgiapp; CREATE TABLE "pisso_account" ( "pisso_account_id" number(20) NOT NULL DEFAULT nextval('pisso_account_id_seq'::regclass), "sno" number(20) NOT NULL, "p10" varchar2(32) NOT NULL COLLATE "pg_catalog"."default", "p13" varchar2(100) COLLATE "pg_catalog"."default", "u_name" varchar2(32) COLLATE "pg_catalog"."default", "u_id" varchar2(32) COLLATE "pg_catalog"."default", "parent_group" varchar2(200) COLLATE "pg_catalog"."default", "child_group" varchar2(200) COLLATE "pg_catalog"."default", "branch_group" varchar2(200) COLLATE "pg_catalog"."default", "branch_group_code" varchar2(14) COLLATE "pg_catalog"."default", "begtime" number(11) NOT NULL, "endtime" number(11) NOT NULL, "branch" char(14) NOT NULL, CONSTRAINT "pisso_account_pkey" PRIMARY KEY ("pisso_account_id"), CONSTRAINT "pisso_account_p10_uni" UNIQUE ("p10") ); CREATE UNIQUE INDEX "pisso_account_uni_idx" ON "gi_dingtalk_resp"("sno"); COMMENT ON COLUMN "pisso_account"."pisso_account_id" IS '物理主键'; COMMENT ON COLUMN "pisso_account"."sno" IS '记录行号'; COMMENT ON COLUMN "pisso_account"."p10" IS 'P10账号'; COMMENT ON COLUMN "pisso_account"."p13" IS 'P13账号'; COMMENT ON COLUMN "pisso_account"."u_name" IS '员工姓名'; COMMENT ON COLUMN "pisso_account"."u_id" IS '身份证号'; COMMENT ON COLUMN "pisso_account"."parent_group" IS '总公司名称'; COMMENT ON COLUMN "pisso_account"."child_group" IS '分公司名称'; COMMENT ON COLUMN "pisso_account"."branch_group" IS '中支公司名称'; COMMENT ON COLUMN "pisso_account"."branch_group_code" IS '3级机构代码'; COMMENT ON COLUMN "pisso_account"."begtime" IS '开始日期'; COMMENT ON COLUMN "pisso_account"."endtime" IS '中止日期'; COMMENT ON COLUMN "pisso_account"."branch" IS '分公司代码'; COMMENT ON TABLE "pisso_account" IS 'P13及P10账号信息表'; 这个建表语句有问题吗?

最新推荐

recommend-type

Java开发案例-springboot-66-自定义starter-源代码+文档.rar

Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar
recommend-type

单家独院式别墅图纸D027-三层-12.80&10.50米-施工图.dwg

单家独院式别墅图纸D027-三层-12.80&10.50米-施工图.dwg
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB柱状图在数据分析中的作用:从可视化到洞察

![MATLAB柱状图在数据分析中的作用:从可视化到洞察](https://img-blog.csdnimg.cn/img_convert/1a36558cefc0339f7836cca7680c0aef.png) # 1. MATLAB柱状图概述** 柱状图是一种广泛用于数据可视化的图表类型,它使用垂直条形来表示数据中不同类别或组别的值。在MATLAB中,柱状图通过`bar`函数创建,该函数接受数据向量或矩阵作为输入,并生成相应的高度条形。 柱状图的优点在于其简单性和易于理解性。它们可以快速有效地传达数据分布和组别之间的比较。此外,MATLAB提供了广泛的定制选项,允许用户调整条形颜色、
recommend-type

已知自动控制原理中通过更高的频率特征来评估切割频率和库存——相位稳定。确定封闭系统的稳定性。求Wcp 和ψ已知W(p)=30•(0.1p+1)•(12.5p+1)/p•(10p+1)•(0.2p+1)•(p+1)

根据相位稳定的定义,我们需要找到一个频率 Wcp,使得相位满足 -ψ = -180°,即 ψ = 180°。此时系统的相位裕度为 0°,系统处于边缘稳定状态。 首先,我们需要将 W(p) 表示成极点和零点的形式。将分母和分子分别因式分解,得到: W(p) = 30 • (0.1p+1) • (12.5p+1) / [p • (10p+1) • (0.2p+1) • (p+1)] = 375p/(p+1) - 3750/(10p+1) + 750p/(0.2p+1) - 3750p/(10p+1) + 150p/(p+1) + 30 因此,系统的极点为 -1、-0.1、-0.2、