• MySQL+Java实现父子级联查询


    在做后台网站(平台/系统)业务开发时,经常遇到层级概念。比如我最近在全权负责(开发+测试+产品)的一款数据产品就有分类的层级概念,层级有3层;另外产品有数据集、图表、看板、组合看板、数据推送等功能点(概念),这些功能点名称都有层级的概念。

    举个例子:创建一个一级分类(最顶级)数据集。背景知识:数据集其实就是多段SQL,SQL里面可以有删表后建表的语句(drop then create table),那我可以在这个SQL里面创建一个最基础的表(table),只不过SQL的最后一个子句必须得是查询字句(数据  概念体现点)。然后我可以再创建一个二级分类的数据集,然后这个数据集的SQL可以使用一级分类数据集SQL里面的表(table),查询这个table,用来做图表。三级分类类推。

    上图中,以 / 形式拼接返回多级分类名称,并给出层级的实现,参考附录。

    分类表设计:

    1. create table category(
    2. category_id bigint auto_increment primary key,
    3. category_name varchar(100) not null,
    4. type int(1) not null comment '1:数据集 2:图表 3:看板 4:组合看板',
    5. isactive tinyint(1) default 1 not null comment '逻辑删除',
    6. parent_id bigint null comment '父级id'
    7. );

    数据准备:

    1. INSERT INTO category (category_id, category_name, type, isactive, parent_id) VALUES (869, '图表分类A', 2, 1, 898);
    2. INSERT INTO category (category_id, category_name, type, isactive, parent_id) VALUES (882, '图表分类B', 2, 1, 869);
    3. INSERT INTO category (category_id, category_name, type, isactive, parent_id) VALUES (888, '图表分类1', 2, 1, 898);
    4. INSERT INTO category (category_id, category_name, type, isactive, parent_id) VALUES (898, '图表分类', 2, 1, null);

    图表的表设计:

    1. create table widget (
    2. widget_id bigint auto_increment primary key,
    3. widget_name varchar(100) not null comment '图表名称',
    4. category_id bigint not null comment '分类id',
    5. isactive tinyint(1) default 1 not null comment '逻辑删除字段'
    6. );

    如何选择一级分类时,查询下面的二级以及三级分类呢?具体来说,查询条件里面指定图表的一级分类ID,如何查询其下的二级和三级分类的图表?即所谓的MySQL级联(父子)查询。

    在构思实

  • 相关阅读:
    驱动day4
    【Leetcode】134.加油站
    满足你甜食需求的葡萄酒是怎样的?
    【LeetCode】【剑指offer】【二维数组中的查找】
    SpringBoot学习笔记-创建个人中心页面(下)
    关于webpack(v5.74.0)的html-webpack-plugin原理
    vscode远程调试python代码
    一篇文章教你自动化测试如何解析excel文件?
    基于Java毕业设计郑工社团交流服务信息平台源码+系统+mysql+lw文档+部署软件
    短视频时代,亚马逊产品视频的作用是什么?对于提升Listing转化率究竟有何好处?
  • 原文地址:https://blog.csdn.net/guanshengg/article/details/126398681