mysql实现ORACLE的connect by prior父子递归查询
2024-10-20 15:58:00
oracle中有connect by prior ,可以实现父子递归查询。而mysql中没有这种功能,但我们可以变通实现。
比如一个表:
Table Name: tb_Tree
Id | ParentId | Name
--------------------
1 | 0 | Fruits
2 | 0 | Vegetables
3 | 1 | Apple
4 | 1 | Orange
5 | 2 | Cabbage
6 | 2 | Eggplant
我们需要知道某个ID的所有下级。
以下这个查询,可以列出所有水果蔬菜的四层上级ID,如果没有四级,则相应的parentid为Null。(你也可以扩展级数)
select id,name,parentid
,(select parentid from tb_tree where id=t.parentid) parentid2
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid)) parentid3
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid))) parentid4
from tb_tree t
于是我们很方便查到我们所要的结果,比如要查fruits的所有children:
select id ,name from (
select id, name, parentid
,(select parentid from tb_tree where id=t.parentid) parentid2
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid)) parentid3
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid))) parentid4
from tb_tree t) tt
whereifnull(parentid4,0)=1 or ifnull(parentid3,0)=1 or ifnull(parentid2,0)=1 or ifnull(parentid,0)=1
最新文章
- 关于Agile Scrum的笔记
- 偷师--先留着。。ssh,nginx,防火墙相关命令
- 使用Jaxb2进行xml与bean的转义时Date的format设置
- 飞天诚信usb-key登录windows+远程桌面
- Entity Framework之问题收集
- OSGI框架学习
- [转载] Zookeeper中的 ACL(Access Control List)访问控制列表
- ubuntu14.04 cocos2d-x-3.6 glfw编译出错解决方案
- 实际比较filter2D和imfilter之间的关系
- 201521123115 《Java程序设计》第12周学习总结
- Java连接数据库完整代码 查找和插入
- java环境变量和tomcat环境变量配置
- pyqt4 写动画不能播放问题集合
- 最快1天搭建短视频APP!阿里云短视频解决方案上线
- CodeForces5E 环转链,dp思想
- Hystrix 学习使用
- XML文件的DTD编写
- 捕获海康威视IPCamera图像,转成OpenCV能够处理的图像(二)
- 洛谷P4043 支线剧情
- DSO安装试运行