`
a137268431
  • 浏览: 145950 次
文章分类
社区版块
存档分类
最新评论

MySQL 中的树形数据处理示例

 
阅读更多

创建测试表

  1. CREATETABLE`areatest`(
  2. `id`int(11)NOTNULLAUTO_INCREMENT,
  3. `parent_id`int(11)NOTNULLDEFAULT'0'COMMENT'父ID',
  4. `order_id`int(11)NOTNULLDEFAULT'0'COMMENT'排序ID',
  5. `name`varchar(50)NOTNULLCOMMENT'名称',
  6. PRIMARYKEY(`id`)
  7. )ENGINE=MyISAMAUTO_INCREMENT=0DEFAULTCHARSET=utf8COMMENT='地区';
  8. insertinto`areatest`values(1,0,1,'北京'),(2,0,3,'江西'),(3,0,2,'上海'),(4,2,1,'南昌'),(5,2,2,'九江'),(6,4,1,'永修'),(7,4,2,'星子'),(8,2,3,'赣州');

表效果图

创建树形层次分析存储过程

  1. DELIMITER$$
  2. DROPPROCEDUREIFEXISTS`sp_areatest_child_nodes`$$
  3. /*获取指定父ID树形层次数据放到child_nodes临时表*/
  4. CREATEPROCEDURE`sp_areatest_child_nodes`(IN$parent_idINT/*父ID*/)
  5. BEGIN
  6. DECLARELEVELSMALLINTDEFAULT0;/*层次*/
  7. DECLAREcouINTDEFAULT0;
  8. DROPTABLEIFEXISTSchild_nodes_temp;/*单层次临时表*/
  9. DROPTABLEIFEXISTSchild_nodes;/*层次临时表*/
  10. CREATETEMPORARYTABLEchild_nodes_temp(`id`INT,`level`INT,`order_id`VARCHAR(1000))DEFAULTCHARSET=utf8;
  11. CREATETEMPORARYTABLEchild_nodes(`id`INT,`level`INT,`order_id`VARCHAR(1000))DEFAULTCHARSET=utf8;
  12. INSERTINTOchild_nodes_tempSELECT`id`,LEVEL,CAST(RIGHT(100+`order_id`,2)ASCHAR)FROM`areatest`WHERE`parent_id`=$parent_id;
  13. SELECTROW_COUNT()INTOcou;
  14. INSERTINTOchild_nodesSELECT*FROMchild_nodes_temp;
  15. WHILEcou>0DO
  16. SETLEVEL=LEVEL+1;
  17. TRUNCATETABLEchild_nodes_temp;
  18. INSERTINTOchild_nodes_tempSELECTa.`id`,LEVEL,CONCAT(b.order_id,CAST(RIGHT(100+a.`order_id`,2)ASCHAR))FROM`areatest`a,child_nodesbWHEREa.`parent_id`=b.`id`ANDb.`level`=LEVEL-1;
  19. SELECTROW_COUNT()INTOcou;
  20. INSERTINTOchild_nodesSELECT*FROMchild_nodes_temp;
  21. ENDWHILE;
  22. DROPTABLEchild_nodes_temp;
  23. END$$
  24. DELIMITER;

创建树形数据查询存储过程

  1. DELIMITER$$
  2. DROPPROCEDUREIFEXISTS`sp_areatest_tree`$$
  3. /*获取指定父ID树形数据*/
  4. CREATEPROCEDURE`sp_areatest_tree`(IN$parent_idINT/*父ID*/)
  5. BEGIN
  6. CALLsp_areatest_child_nodes($parent_id);
  7. SELECTa.id,CASEb.parent_idWHEN0THENb.nameELSECONCAT(SPACE(a.level*2),'|-',b.name)ENDAS`name`
  8. FROMchild_nodesaINNERJOIN`areatest`bONa.id=b.id
  9. ORDERBYa.order_id;
  10. DROPTABLEchild_nodes;
  11. END$$
  12. DELIMITER;

测试1

CALL sp_areatest_tree(0);

MySQL树形数据处理示例1

测试2

CALL sp_areatest_tree(2);

MySQL树形数据处理示例2

分享到:
评论

相关推荐

    经典SQL脚本大全

    │ │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql │ │ 8.2.4 查找指定节点的所有父节点的示例...

    Sqlserver2000经典脚本

    │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql │ │ 8.2.4 查找指定节点的所有父...

    基于最新的Java 21和SpringBoot 3.2 根据eladmin项目进行改造+源代码+文档说明

    - 部门管理:可配置系统组织架构,树形表格展示(Draft) - 岗位管理:配置各个部门的职位(Draft) - 字典管理:可维护常用一些固定的数据,如:状态,性别等 - 系统日志:记录用户操作日志与异常日志,方便开发人员...

    二十三种设计模式【PDF版】

    就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和单位做买卖。文章中还对 Jive再进行了剖析。 设计模式之 Decorator(装饰器) Decorator 是个油漆工,给...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    java源码包2

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...

    java源码包---java 源码 大量 实例

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    java源码包3

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...

    java源码包4

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    cmd操作命令和linux命令大全收集

    arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息 start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 mem 查看cpu...

Global site tag (gtag.js) - Google Analytics