MySQL递归查询上下级菜单

表中数据如下所示,`uid`为1的是顶级菜单,`ubelog`为0。现在,我们想要根据输入的`uid`,展示该`uid`及其所有下级单位的`uid`。通常,我们可以通过代码或常用的存储过程实现此功能,但本文将使用SQL语句来解决。核心SQL语句如下:执行结果如下,传入`uid`为1后,列出了所有下级单位,包括第三级菜单。
MySQL递归查询上下级菜单
在后台管理系统中,展示多级菜单关系是一项常见需求。本文将介绍如何通过一条SQL语句实现这一功能。以`corpinfo`单位表为例,假设其中包含一个`belong`字段,用于指向上级单位。

表中数据如下所示,`uid`为1的是顶级菜单,`ubelog`为0。

现在,我们想要根据输入的`uid`,展示该`uid`及其所有下级单位的`uid`。通常,我们可以通过代码或常用的存储过程实现此功能,但本文将使用SQL语句来解决。

核心SQL语句如下:

执行结果如下,传入`uid`为1后,列出了所有下级单位,包括第三级菜单。

关键点在于使用了`GROUP_CONCAT()`函数,它在分组查询中将同一分组内的值连接起来,返回一个字符串结果。

例如,在`user`用户表中,查询名字相同的用户最小年龄的SQL语句如下,执行结果展示如下。

若要查询所有名字相同的人的所有年龄,使用`GROUP_CONCAT()`函数可以实现,如下所示,执行结果为:

通过`GROUP_CONCAT()`函数,每个名字只出现一次,同时显示了所有名字相同的人的id。

接着,我们介绍`FIND_IN_SET()`函数,它用于查找字段中的特定值。例如,在`book`书籍表中,查询作者包含`小A`的书籍时,可以使用`FIND_IN_SET()`函数实现,执行结果如下所示。

使用`LIKE`关键字查找时,会将包含`小A`的书籍全部列出,包括那些作者名字中仅包含`小A`的书籍。而`FIND_IN_SET()`函数则能正确匹配包含`小A`的书籍。

综上所述,通过`GROUP_CONCAT()`和`FIND_IN_SET()`函数的运用,我们成功实现了多级菜单的展示,并通过SQL语句解决了相关问题。这种方法简洁易懂,适用于需要查询层级关系的场景。

在实际应用中,我们还可以通过递归构建单位树,实现更复杂的业务逻辑。本文提供的SQL解决方案仅作为实现该功能的一种方法,如需进一步优化或调整,请根据实际情况进行调整。希望本文提供的信息对您有所帮助。2024-08-16
mengvlog 阅读 7 次 更新于 2025-07-20 15:31:53 我来答关注问题0
  • 核心SQL语句如下:执行结果如下,传入`uid`为1后,列出了所有下级单位,包括第三级菜单。关键点在于使用了`GROUP_CONCAT()`函数,它在分组查询中将同一分组内的值连接起来,返回一个字符串结果。例如,在`user`用户表中,查询名字相同的用户最小年龄的SQL语句如下,执行结果展示如下。若要查询所有名字相同...

  • 一、基于递归查询实现上下级关系 在MySQL中,使用递归查询的方法就是通过with recursive关键字实现。with recursive用于指示一个递归的结果集,并且配合select、union等关键字组成查询语句。下面是一个示例:–假设有一个dept表,其中包含部门编号(dept_id)和上级部门编号(parent_id)字段 with recurs...

  • 查询上下级菜单可以使用MySQL中的递归查询。先查询顶级菜单,再查询子菜单,直到查询到最底层的叶子菜单。实现递归查询可以使用MySQL中的WITH RECURSIVE语句。一个简单的递归查询示例如下:WITH RECURSIVE cte AS (SELECT * FROM `menu` WHERE parent_id = 0 UNION ALL SELECT c.* FROM `menu` c JOIN...

  •  文暄生活科普 BootstrapBlazor实战 Tree树形控件使用(2)

    借助ToTreeList方法,将查询到的平面数据转换为树状List,实现数据的结构化展示。针对无限级分类的删除需求,实现递归逻辑,确保删除操作的完整性和效率。AsTreeCte方法封装了递归查询的复杂性,简化了无限级分类表的查询过程,适用于多种数据库环境。数据实体类的定义与转换,通过新建Model/TreeDataFsqlFoo.c...

  •  shihoumacili putty删除的文件存放在哪里

    Putty的设置保存功能隐藏比较深,原来在Connection菜单中修改设置后,并不能在该界面保存,需要点击Session菜单,选中下面的Default Setting然后点Save才能保存Connection里面修改的设置。putty的命令用法:-rm [file] 删除文件/文件夹$rm -f [file] 强行删除,忽略不存在的文件,无提示$rm -r [file] 递...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部