MySQL 级联查询所有父级
表结构:
id | name | code | parent_code |
1 | 老板 | A | |
2 | 总经理 | B | A |
3 | 项目总监 | C | B |
4 | 开发工程师 | D | C |
查询D开发工程师的所有上级:
1 | SELECT ` name `, @`code` AS c_ids, <br>( SELECT @`code` := parent_code FROM depart WHERE `code` = @`code` ) <br> AS p_ids FROM depart ,<br>( SELECT @`code` := 'D' ) b |
SQL 分析:
1 | SELECT @`code`:= 'D' 的作用是 把 'D' 赋值给变量 @`code` |
赋值的方法还有其他写法:
1、set @`code`='D';
2、set @`code`:='D';
3、select @`code`='D';
4、select @`code`= 字段名 from 表名 where ……
1 | SELECT @`code` := parent_code FROM depart WHERE `code` = @`code` |
不断的赋值与查询:
不断的查询 parent_code 并赋值给@`code` 通过WHERE条件不断的查询新值。
去重的写法:
1 | SELECT u2.`code`, u2.` name ` <br> FROM ( SELECT @`code` AS c_ids , <br>( SELECT @`code` := parent_code FROM depart WHERE `code` = @`code` ) AS p_ids ,@l := @l + 1 AS LEVEL FROM depart, <br>( SELECT @`code` := 'D' , @l := 0 ) b ) u1 <br> JOIN depart u2 ON u1.c_ids = u2.`code` |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!