如何让MySQL中单句实现无限层次父子关系查询

如何让MySQL中单句实现无限层次父子关系查询,第1张

表结构和数据

CREATE TABLE table1(id int, name varchar(10), parent_id int)

INSERT table1 VALUES

(1, ‘Home’, 0),

(2, ‘About’, 1),

(3, ‘Contact’, 1),

(4, ‘Legal’, 2),

(5, ‘Privacy’, 4),

(6, ‘Products’, 1),

(7, ‘Support’, 2)

查询 id = 5 的所有父级

SELECT ID.level, DATA.* FROM(

SELECT

@id as _id,

( SELECT @id := parent_id

FROM table1

WHERE id = @id

) as _pid,

方法/步骤

首先我们需要在mysql管理工具上面新建一个表,也可以用mysql命令创建,表建立完成之后,你需要将表中的字段名字告诉给填写excel表的人员.

请点击输入图片描述

打开excel表,按照程序提供的字段填写相应的数据.此时注意下面几点:名字(我用红色标示出来了)需要跟程序提供的一样,其他的描述,表头可以不写都行.

请点击输入图片描述

我使用的mysql管理工具是Navicat for MySQL,打开工具,选择表所在的数据库,然后点击数据库名字,右键数据,出来下拉菜单选择import wizard ,有汉化版本的更明确.d出一个选择界面,我们选择excel file文件

请点击输入图片描述

请点击输入图片描述

点击next(下一步),我们选择我们对应的excel文件就行,然后再下面选在我们的文件内容在哪一个sheet中,也就是你的内容写在excel什么地方,这点需要注意,也是关键的地方,我的内容在sheet3中,所以我选择sheet3 ,如图:

请点击输入图片描述

点击next (此步骤也是关键步骤),需要注意2点: 1:filed name row 就是你的字段所在excel中的位置,也就是第几行(简单办法,一般就是英文对应的那一列).2:first data row(从哪一行开始执行),数据从哪一行开始呢,我这里选择的是3,4.

请点击输入图片描述

点击next 我们选择 target table 目标对应的数据库,选择你要导入到哪个数据库中表中.

请点击输入图片描述

如果到上面一步没有问题的话,我们默认next到最后 就行了.然后打开表就能看到数据跟excel表中的一样.

请点击输入图片描述

定义一个查找父表最大ID的方法.

执行插入父表数据后,调用该方法得到ID,因为插入数据后得到的最大ID应该就是刚保存的

然后将ID保存在子表中 当然保存父表和子表在一个方法内执行

大概思路如下

public void test (参数){

/执行插入父表--》得到最大ID--》保存子表

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8471489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存