单纯MYSQL递归查询上下级关系

查询 id = 6 的所有父级

SELECT ID.level, DATA.* FROM(
SELECT
@id as _id,
( SELECT @id := parent_id
FROM table1
WHERE id = @id
) as _pid,
@l := @l+1 as level
FROM table1,
(SELECT @id := 6, @l := 0 ) b
WHERE @id > 0
) ID, table1 DATA
WHERE ID._id = DATA.id
ORDER BY level;

根据这个父级查询方法,很容易可以写出查所有子级的,下面的查询 id=3 的所有子级
SELECT ID.level, DATA.* FROM(
SELECT
@ids as _ids,
( SELECT @ids := GROUP_CONCAT(id)
FROM table1
WHERE FIND_IN_SET(parent_id, @ids)
) as cids,
@l := @l+1 as level
FROM table1,
(SELECT @ids :=3, @l := 0 ) b
WHERE @ids IS NOT NULL
) id, table1 DATA
WHERE FIND_IN_SET(DATA.id, ID._ids)
ORDER BY level, id


原文地址:https://www.cnblogs.com/hl15/p/11145058.html

时间: 2024-11-10 03:53:06

单纯MYSQL递归查询上下级关系的相关文章

Mysql递归查询,无限级上下级菜单

mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到) 由于mysql 不支持类似 oracle with ...connect的 递归查询语法 之前一直以为类似的查询要么用存储过程要么只能用程序写递归查询. 现在发现原来一条sql语句也是可以搞定的 先来看数据表的结构如下: id  name    parent_id ---------------------------  1   Home        0  2   About       1  3   Contact

MySQL递归查询,实现上下级联查,父子级查询

? 最近在工作当中,遇见了有ztree关系的查询: 比如:根据父级的部门ID查询所有的子级部门: 根据父级的区划代码查询所属下级的所有区划信息: 根据子级ID查询隶属行政区划信息: 根据组织机构ID查询所有子级组织机构: 数据准备 为了测试,我们首先来创建一张拥有上下级关系的表,这里选择创建一张区划信息表 DROP TABLE IF EXISTS `tb_area`; CREATE TABLE `tb_area` ( `area_id` int(10) unsigned NOT NULL AUT

树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示

树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:parent_id) 三.Java模型 (我们把这张网撒在html的一张表里.其实用ul来展示会简单N多,自己思考为什么LZ会选择放在表里) private class Table {        private Long id; // 当前对象的id         private int x; /

mysql 递归查询sql语句的实现

SELECT t.ITEM_NAME, t.ITEM_CID, t.ITEM_PID FROM `tlk_案由表单` t WHERE NOT EXISTS( select * from `tlk_案由表单` t1,`tlk_案由表单` t2 where t1.ITEM_CID=t2.ITEM_PID AND t.ITEM_CID=t1.ITEM_CID ) 注意到ITEM_CID和ITEM_PID的位置是有很重要的影响的哟,具体情况执行下sql就明白了! MySql递归查询,mysql中从子类I

有上下级关系的数据导入算法

2016-04-28 10:27:26 在各种系统中,都会有一种类型菜单表那样有上下级关系的数据表.在维护数据时,往往是令人头疼不已.一般来说,软件都会配套一个数据导入的功能. Excel的模板是: Excel数据转化成DataTable后 导入算法: public ActionResult ImportData(string filename, string bzid, string lxid) { System.Data.DataTable dt; try { dt = Excel2003.

MySql多对多关系中外键的应用

业务需求:用户表r_user保存用户名等信息.现需要给每个用户设置工作基地,一个用户可以有多个工作基地,多个用户也可以有一个工作基地,即多对多关系.(外键,若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性) 设计方案: 方案一:建立一张用户基地表,与r_user与用户基地表,保持一对多的关系,如图所示,r_user的主键id做为r_user_base的外键user_id.通过r_user中的id,在r_user_base表中load

8.3.7 - mysql 表之间关系

如何找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id) #3.总结: #多对一: 如果只有步骤1成立,则是左表多对一右表 如果只有步骤2成立,则是右表多对一左表 #多对多 如果步骤1和2同时成立,则证明这两张表时一个双

44 MySQL & orm对象关系映射

orm 模型 对象关系映射: Object Relational Mapping 是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 ORM模型的简单性简化了数据库查询过程 三个核心原则: 简单性:以最基本的形式建模数据:简化了数据库查询过程 传达性:数据库结构被任何人都能理解的语言文档化: 精确性:基于数据模型创建正确标准化的结构. 1)singleton 实现orm mysql_singleton.py import pymysql class Mysql(object)

小猿圈之MySql递归查询

不管学习什么语言,python.java.php等等如果你以后的方向是web,那么你都离不开数据库,mysql数据库又是开源的,所以是最受欢迎的数据库,也是企业用的最多的数据库,小猿圈老师详解mysql的递归查询,不懂的同学可以看过来了. 一.递归语句 -- 向下递归函数 SELECT GROUP_CONCAT('''', pk_dept , '''') FROM rzzxdb.bi_dept WHERE FIND_IN_SET(fr_pk_dept,'1070')>0; 设置某个部门下的所有子