【数据库】无限级分类——parent_id

本文介绍了一个无限级分类的数据库设计实例,包括表结构创建、测试数据插入、数据增删改查操作等。通过具体示例展示了如何管理和查询具有层级结构的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:【数据库】无限级分类——总览_OTTOkongbai的博客-CSDN博客

建表

CREATE TABLE person(
    id VARCHAR(255) NOT NULL   COMMENT 'ID' ,
    name VARCHAR(255)    COMMENT '名称' ,
    parent_id VARCHAR(255)    COMMENT '父ID' ,
    PRIMARY KEY (id)
)  COMMENT = '人员组织架构';

插入测试数据

INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('1', '北京子公司', '0');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('2', '采购部', '1');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('3', '采购', '2');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('4', '仓储', '2');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('5', '物流', '2');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('6', '采购一组', '3');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('7', '采购二组', '3');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('8', '张三', '6');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('9', '李四', '6');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('10', '王五', '7');

增删

(北京子公司增加财务部)

INSERT INTO `person` (`id`, `name`, `parent_id`) 
	VALUES (11, '财务部', '1');
INSERT INTO `person` (`id`, `name`, `parent_id`) 
	VALUES (12, '财务经理', '11');
INSERT INTO `person` (`id`, `name`, `parent_id`) 
	VALUES (13, '财务助理', '11');

(北京子公司删除财务部及下属职员)

(采购 下属全部人员)

WITH RECURSIVE _children AS
(
 SELECT fun.* FROM `person` fun WHERE fun.name='采购'
    UNION ALL
 SELECT fun.* FROM _children,`person` fun WHERE fun.parent_id=_children.id
)
SELECT * FROM _children;

(采购 直属部门或员工)

SELECT * FROM `person` a WHERE a.parent_id in
(
    SELECT id FROM `person` b WHERE b.name='采购'
);

(采购一组并入仓储)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值