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

mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到)

由于mysql 不支持类似 oracle with ...connect的 递归查询语法
之前一直以为类似的查询要么用存储过程要么只能用程序写递归查询.

现在发现原来一条sql语句也是可以搞定的

先来看数据表的结构如下:

id  name    parent_id 

--------------------------- 
1   Home        0 
2   About       1 
3   Contact     1 
4   Legal       2 
5   Privacy     4 
6   Products    1 
7   Support     1 
我要的要求是根据一个分类ID(这个分类ID可能是一个子分类),得到所有的父分类,下面是相应的SQL:

SELECT T2.id, T2.name 
FROM ( 
    SELECT 
        @r AS _id, 
        (SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id, 
        @l := @l + 1 AS lvl 
    FROM 
        (SELECT @r := 5, @l := 0) vars, 
        table1 h 
    WHERE @r <> 0) T1 
JOIN table1 T2 
ON T1._id = T2.id 
ORDER BY T1.lvl DESC;

转载于:https://www.cnblogs.com/Struggles/p/4923901.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“睡服”面试官系列第二篇之promise(建议收藏学习)

目录 1promise的定义 2基本用法 3. Promise.prototype.then() 4. Promise.prototype.catch() 5. Promise.all() 6. Promise.race() 7. Promise.resolve() 8. Promise.reject() 9. 两个有用的附加方法 10总结 1promise的定义 Promise 是异步编程的一种解决方案&#xf…

Android M 新的运行时权限开发者需要知道的一切

android M 的名字官方刚发布不久&#xff0c;最终正式版即将来临&#xff01; android在不断发展&#xff0c;最近的更新 M 非常不同&#xff0c;一些主要的变化例如运行时权限将有颠覆性影响。惊讶的是android社区鲜有谈论这事儿&#xff0c;尽管这事很重要或许在不远的将来会…

查看IIS连接数

如果要想知道确切的当前网站IIS连接数的话&#xff0c;最有效的方法是通过windows自带的系统监视器来查看。 一、运行-->输入“perfmon.msc”. 二、在“系统监视器”图表区域里点击右键&#xff0c;然后点“添加计数器”. 三、在“添加计数器”窗口&#xff0c;“性能对象”…

SpringMVC关于json、xml自动转换的原理研究[附带源码分析]

目录 前言现象源码分析实例讲解关于配置总结参考资料 前言 SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉&#xff0c;那么请参考它的入门blog&#xff1a;http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html 现象 本文使用的demo基于maven…

“睡服”面试官系列第三篇之变量的结构赋值(建议收藏学习)

目录 变量的解构赋值 1. 数组的解构赋值 2. 对象的解构赋值 3. 字符串的解构赋值 4. 数值和布尔值的解构赋值 5. 函数参数的解构赋值 6. 圆括号问题 7. 用途 变量的解构赋值 1. 数组的解构赋值 基本用法 ES6 允许按照一定模式&#xff0c;从数组和对象中提取值&#…

【宋红康程序思想学习日记3】杨辉三角

class Shuzu3 { public static void main(String[] args) {    int[][] yanghuinew int[10][];   //初始化二维数组   for(int i0;i<yanghui.length;i){     yanghui[i]new int[i1]; }   for(int i0;i<yanghui.length;i){     for(int j0;j<yanghui…

Android为网络请求自定义加载动画

android自带的加载动画都不怎么好看&#xff0c;在这里介绍一种自定义加载动画的方法 原始图片&#xff1a; 编写动画progressbar.xml, <?xml version"1.0" encoding"utf-8"?> <animated-rotate android:drawable"drawable/publicloading&…

mybatis在xml文件中处理大于号小于号的方法

第一种方法&#xff1a; 用了转义字符把>和<替换掉&#xff0c;然后就没有问题了。 SELECT * FROM test WHERE 1 1 AND start_date < CURRENT_DATE AND end_date > CURRENT_DATE 附&#xff1a;XML转义字符 < …

Android之Notification初识

1.Notification创建 首先&#xff0c;介绍一下&#xff0c;创建一个通知所需要用到的类和方法NotificationManager类 NotificationManager类是用来管理系统的所有通知的类&#xff0c;该类的对象必须通过Context类的getSystemService()方法获取。完整代码&#xff1a; Notifica…

MyBatis参数传入集合之foreach动态sql

foreach的主要用在构建in条件中&#xff0c;它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item&#xff0c;index&#xff0c;collection&#xff0c;open&#xff0c;separator&#xff0c;close。item表示集合中每一个元素进行迭代时的别名&#xff0c;index指…

“睡服”面试官系列第四篇之字符串的扩展(建议收藏学习)

目录 字符串的扩展 1. 字符的 Unicode 表示法 2. codePointAt() 3. String.fromCodePoint() 4. 字符串的遍历器接口 5. at() 6. normalize() 7. includes(), startsWith(), endsWith() 8. repeat() 9. padStart()&#xff0c;padEnd() 10. 模板字符串 11. 实例&…

Chapter 5 Exercises Problems

转载于:https://www.cnblogs.com/momoko/p/4931714.html

Android之Notification制作多媒体控制器

上一篇讲述了Notification的基础用法&#xff0c;本篇将介绍&#xff0c;自定义通知栏&#xff0c;并利用讲到的内容&#xff0c;实现一个简单的音乐播发器。 1.自定义通知的实现&#xff1b; Notification有一个contentView属性&#xff0c;该属性接受的对象是RemoteView对象&…

MyBatis 多表联合查询及优化

关于优化 对于优化嘛&#xff0c;我这里简单的提几点&#xff0c;大家可以考虑一下。首先&#xff0c;就是对表的设计&#xff0c;在设计表初期&#xff0c;不仅仅要考虑到数据库的规范性&#xff0c;还好考虑到所谓的业务&#xff0c;以及对性能的影响&#xff0c;比如&#x…

React Native windows环境安装遇到的坑

在官方中文文档中&#xff08;http://reactnative.cn/docs/0.37/getting-started.html&#xff09;有一段话是&#xff1a;使用Chocolatey来安装NodeJS。注意&#xff0c;目前已知Node 7.1版本在windows上无法正常工作&#xff0c;请注意避开这个版本&#xff01; 如何避开&…

linux指令查看tomcat日志

实际开发中经常遇到查看远程tomcat日志&#xff0c;来查找原因:因此总结了一些常用的linux指令 1、先切换到&#xff1a;cd usr/local/tomcat5/logs 2、tail -f catalina.out3、这样运行时就可以实时查看运行日志了 Ctrlc 是退出tail命令。 其他常用的linux指令整理&#x…

iptables对请求的URL作IP访问控制

服务器运行环境是Tomcat&#xff0c;现在要实现的目的是&#xff0c;只允许特定的IP访问某个目录&#xff0c;一种方法是在tomcat配置文件server.conf中&#xff0c;使用RemoteAddrValve对虚拟主机做访问控制。另外一种方法可以通过iptables规则。个人比较喜欢iptables例如&…