mysql 层次化查询_SQL高级查询(层次化查询,递归)

本文介绍了在MySQL中进行层次化查询的方法,包括使用CONNECT BY和START WITH语法,以及如何通过递归查询实现相同效果。通过示例展示了如何查询具有层次结构的数据,如组织结构或产品组件,并通过调整查询来呈现更清晰的层次感。
摘要由CSDN通过智能技术生成

SQL 高级查询

层次化查询

层次化结构可以理解为树状数据结构,由节点构成。比如常见的组织结构由一个总经理,多个副总经理,多个部门部长组成。再比如在生产制造中一件产品会有多个子零件组成。举个简单的例子,如下图所示

437cdea5e0f96b702b1772ab4acd68bc.png

汽车作为根节点,下面包含发动机和车身两个子节点,而子节点又是由其他叶节点构成。(叶节点表示没有子节点的节点)

假如我们要把这些产品信息存储到数据库中,会形成如下数据表。

37cfd5d3b53e999a38f4a9252bfbd9d7.png

我们用 parent_product_id 列表示当前产品的父产品是哪一个。

那么用 SQL 语句如何进行层次化查询呢?这里就要用到 CONNECT BY 和 START WITH 语法。

我们先把 SQL 写出来,再来解释其中的含义。

SELECT

level,

id,

parent_product_id,

name

FROM

product

START WITH id = 1

CONNECT BY prior id = parent_product_id

ORD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值