mysql查询一棵树,一级→二级→三级→四级的形式查询出结果?

数据库里面一张表存了一棵树,存储结构为菜单栏的1,2,3,4级菜单,以id,par_id
关联,怎么以字段name达到查询出结果一级→二级→三级→四级的形式查询出结果?

7个回答

select
q.func_id,q.func_name,q.par_func_id,
case
when
exists(select 1 from quota_category c where q.func_id=c.par_func_id)
then
1 else 0 end isParent
from 表名 q

mysterychen
mysterychen 2、SELECT b.par_name,a.par_name,a.son_name FROM tc_func_tree a LEFT JOIN tc_func_tree b ON a.par_id = b.son_id
大约 2 年之前 回复
mysterychen
mysterychen 两句sql分别为,1、create table tc_func_tree select a.FUNC_ID AS son_id,a.FUNC_NAME AS son_name,b.FUNC_ID as par_id,b.FUNC_NAME as par_name from tc_func a LEFT JOIN tc_func b ON a.PAR_FUNC_ID=b.FUNC_ID
大约 2 年之前 回复
mysterychen
mysterychen 您好,我得到想要的结果了,但是用了两段sql,您能帮我看看能不能把两句sql优化为一句吗?感谢
大约 2 年之前 回复
mysterychen
mysterychen 我刚才尝试用select e.FUNC_ID,e.FUNC_NAME,l.FUNC_NAME from tc_func e LEFT JOIN tc_func l ON e.PAR_FUNC_ID=l.FUNC_ID,得到了两级菜单
大约 2 年之前 回复
Aasdfghjkl123_
Aasdfghjkl123_ ...
大约 2 年之前 回复
mysterychen
mysterychen 您好,请问一下表c,quota_category是怎么来的?
大约 2 年之前 回复

我觉得最好的办法是在业务里面组装成树形数据返回,
具体查看文章:
https://mp.csdn.net/postedit/80812336

数据库结构如下:图片说明
想要的结果:图片说明

select
q.func_id,q.func_name,q.par_func_id,
case
when
exists(select 1 from 表名 c where q.func_id=c.par_func_id)
then
1 else 0 end isParent
from 表名 q

尝试用select e.FUNC_ID,e.FUNC_NAME,l.FUNC_NAME from tc_func e LEFT JOIN tc_func l
ON e.PAR_FUNC_ID=l.FUNC_ID
得到两级菜单的结果:
图片说明

个人觉得,这种相对固定,修改率不大的数据,可以先分表查询后在业务层进行封装。

select * from (select col from table) t where t.col='1';

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

mysql树形结构查询问题

各位大牛,我有张树形结构mysql表,id字段为唯一标识字段,parent_id 是父节点的 id值,我想通过sql语句查询出name字段的值,让每个子节点的name字段的值都显示为 对应祖宗节点(即parent_id为0)的name字段的值? ![图片说明](https://img-ask.csdn.net/upload/201705/31/1496220503_556731.png)

三级联动的二级和三级要用查询到的数据来关联

![图片说明](https://img-ask.csdn.net/upload/201512/08/1449540207_244423.png) 如图所示,gc_parent_id=0的商品是第一级,后面二三级的gc_parent_id等于他前一级的id,然后我在网上找了个三级联动的JS代码,我的核心代码如图: ![图片说明](https://img-ask.csdn.net/upload/201512/08/1449540540_102033.png) 我本来的想法是循环套循环,每次根据查询出来上一级的id来查询下一级的id和name,然后套用三级联动JS代码的写法来写,但是出来的效果是所有的东西都在一起: ![图片说明](https://img-ask.csdn.net/upload/201512/08/1449540811_848851.png); 想问问各位该怎么做。。。。实在是没辙了啊!最头疼的地方在于那个.=把所有查询出来的东西都连在一起了! help!!!!

mysql 如何分层查询出树型结构

![图片说明](https://img-ask.csdn.net/upload/201608/30/1472545573_453140.png) 如上图 , 要做一个列表。查出的数据需要 分三个级别,其中二级在一级下显示,三级在二级下显示。 比如:电脑是一级 ,然后紧接着 电脑整机 再 台式~~~ 更像一个树形对吗?为什么要做成列表? 还带分页 因为设计如此。 所以此帖只讨论 如何 用sql 查出这样的结果。 是mysql 数据库

mySql 查询问题 有三张商品分类表 一二三级,我想在三级分类表中查出相对应的一级分类标的名称

![数据库表](https://img-ask.csdn.net/upload/201709/07/1504715792_935224.png) ![网页效果](https://img-ask.csdn.net/upload/201709/07/1504715817_827224.png) 刚学SPring mvc 希望有高人指点一下 谢谢

ssm做三级级联树形图实现条件查询功能

我采用的是ssm框架,项目里有下拉框三级级联的查询功能(已实现)。现在想做一个三级级联的树形图进行条件查询。想知道具体思路,下拉框级联查询对做树形图查询有没有可以调用的。希望大神能详解一下。前台用ul,li,或者使用ztree

mysql 通过父级查询所有子级和孙级

![图片说明](https://img-ask.csdn.net/upload/201603/30/1459306772_425966.jpg) 现在有一个需求,是根据一级父类(水果蔬菜)查询出所有的子级与孙级(水果,蔬菜,白菜,苹果,红富士),pid为父级的Id,求大神写处一条效率高的sql

mysql查询中文乱码问题

![1](https://img-ask.csdn.net/upload/201508/21/1440161697_24384.png) ![2](https://img-ask.csdn.net/upload/201508/21/1440161685_359000.png) Navicat和JDBC中都是正常的(Windows),通过cmd(代码页utf8)进mysql,查询结果是第一张图左边;直接进mysql(代码页简体中文GBK)效果第一张图右边。命令查看mysql编码第二张图。 关于mysql乱码问题网上也看了几篇教程,但是都没啥用啊。

MySQL查询一年中每个月的所有数据数量

MySQL写一条sql语句查询一年中每个月的所有数据数量。时间字段是uptime 是decimal类型的

mysql 查询最近三个月的数据

用的是mysql 数据库,需要查表里面 近三个月的数据。 例: 给的条件是 2016-08 查询出来的数据是 2016-08,2016-07 , 2016-06 三个月的数据。 请各位大神指教

mysql无限极分类排序问题

表是这样设计的 ![图片说明](https://img-ask.csdn.net/upload/201507/15/1436949175_57730.png) 2,4,5字段请无视 现在要查询出来这样格式的数据 一级分类 二级分类A 三级分类A 三级分类B 二级分类B 三级分类A 三级分类B 我使用的sql为 select * from vn_erp_healthprice order by sorts sorts字段为varchar类型 查询的结果如下 ![图片说明](https://img-ask.csdn.net/upload/201507/15/1436949388_477974.png) 排序结果满足业务要求,但为什么1-11排在1-2前面 还有 根据字符串排序这是个什么原理来着 好久没用过这种分类了 一时想不起来了 求大神赐教 表sql如下 ``` /* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50621 Source Host : 127.0.0.1:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50621 File Encoding : 65001 Date: 2015-07-15 16:38:49 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `vn_erp_healthprice` -- ---------------------------- DROP TABLE IF EXISTS `vn_erp_healthprice`; CREATE TABLE `vn_erp_healthprice` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', `lyid` varchar(10) NOT NULL DEFAULT '' COMMENT '维修项id', `name` varchar(100) NOT NULL DEFAULT '' COMMENT '维修项名称', `price` varchar(10) NOT NULL DEFAULT '' COMMENT '工时单价', `hours` varchar(10) NOT NULL DEFAULT '' COMMENT '工时', `parent_id` int(11) NOT NULL DEFAULT '0', `sorts` varchar(20) NOT NULL DEFAULT '' COMMENT '排序', PRIMARY KEY (`id`), KEY `hid` (`lyid`) ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of vn_erp_healthprice -- ---------------------------- INSERT INTO `vn_erp_healthprice` VALUES ('1', '', '保养(一级分类)', '', '', '0', '1'); INSERT INTO `vn_erp_healthprice` VALUES ('2', '', '更换(二级分类)', '', '', '1', '1-2'); INSERT INTO `vn_erp_healthprice` VALUES ('3', '1', '更换机油', '', '', '2', '1-2-3'); INSERT INTO `vn_erp_healthprice` VALUES ('4', '2', '更换机油滤清器', '', '', '2', '1-2-4'); INSERT INTO `vn_erp_healthprice` VALUES ('5', '3', '更换空气滤清器', '', '', '2', '1-2-5'); INSERT INTO `vn_erp_healthprice` VALUES ('6', '4', '更换燃油滤清器', '', '', '2', '1-2-6'); INSERT INTO `vn_erp_healthprice` VALUES ('7', '5', '更换全部火花塞', '', '', '2', '1-2-7'); INSERT INTO `vn_erp_healthprice` VALUES ('8', '6', '检查助力转向油', '', '', '11', '1-2-8'); INSERT INTO `vn_erp_healthprice` VALUES ('9', '7', '更换整车制动液', '', '', '2', '1-2-9'); INSERT INTO `vn_erp_healthprice` VALUES ('10', '8', '检查自动变速箱油', '', '', '11', '1-11-10'); INSERT INTO `vn_erp_healthprice` VALUES ('11', '', '检查(二级分类)', '', '', '1', '1-11'); INSERT INTO `vn_erp_healthprice` VALUES ('12', '9', '检查或者更换手动变速箱油', '', '', '11', '1-11-12'); INSERT INTO `vn_erp_healthprice` VALUES ('13', '10', '检查发动机正时皮带', '', '', '11', '1-11-13'); INSERT INTO `vn_erp_healthprice` VALUES ('14', '11', '更换空调滤清器', '', '', '2', '1-2-14'); INSERT INTO `vn_erp_healthprice` VALUES ('15', '', '定期(二级分类)', '', '', '1', '1-15'); INSERT INTO `vn_erp_healthprice` VALUES ('16', '12', '定期添加冷媒', '', '', '15', '1-15-16'); INSERT INTO `vn_erp_healthprice` VALUES ('17', '13', '检查空调管路', '', '', '11', '1-11-17'); INSERT INTO `vn_erp_healthprice` VALUES ('18', '14', '更换防冻冷却液', '', '', '2', '1-2-18'); INSERT INTO `vn_erp_healthprice` VALUES ('19', '15', '检查厚度、调整,必要时更换前刹车片', '', '', '11', '1-11-19'); INSERT INTO `vn_erp_healthprice` VALUES ('20', '16', '检查厚度、调整,必要时更换前刹车盘', '', '', '11', '1-11-20'); INSERT INTO `vn_erp_healthprice` VALUES ('21', '17', '检查厚度、调整,必要时更换后刹车片(蹄)', '', '', '11', '1-11-21'); INSERT INTO `vn_erp_healthprice` VALUES ('22', '18', '检查厚度、调整,必要时更换后刹车盘(鼓)', '', '', '11', '1-11-21'); INSERT INTO `vn_erp_healthprice` VALUES ('23', '', '调整(二级分类)', '', '', '1', '1-22'); INSERT INTO `vn_erp_healthprice` VALUES ('24', '19', '调整雨刮(雨刷)', '', '', '23', '1-22-23'); INSERT INTO `vn_erp_healthprice` VALUES ('25', '20', '检查电瓶', '', '', '11', '1-11-24'); INSERT INTO `vn_erp_healthprice` VALUES ('26', '21', '检查减震器', '', '', '11', '1-11-25'); ```

mysql查询50-100条数据如何查询

mysql查询50-100条数据如何查询mysql查询50-100条数据如何查询mysql查询50-100条数据如何查询

mysql 连表查询 怎样查询三个表

RelationQQID,NickName,Age, 这三个数据来自三个表 怎样查询到 SELECT RelationQQID,NickName,Age FROM QQUser AS u AND BaseInfo AS bi JOIN Relation AS r ON u.QQID=bi.QQID=r.QQID WHERE QQID=88662753 AND RelationStatus=0;

mysql查询三张表统计记录值

一张表(tb_list)里面有很多条数据,每条数据都有一个活动ID,一个入口通道ID。 另一张活动表(tb_act)有字段活动ID和活动名称。 另一张通道表(tb_pass)有通道ID和通道名称。 我现在需要查询统计每个活动的不同入口总数。(一个活动有4个入口,有4个活动)

MySQL多表连接查询,一对多

有4个表, #### attr表 |字段名|类型| |---|---| |id | BIGINT| | name | VARCHAR| |amount | BIGINT #### prop表 |字段名|类型| |---|---| |id | BIGINT| | name | VARCHAR| |status | BIGINT #### prop_attr表 |字段名|类型| |---|---| |id | BIGINT| | prop_id | BIGINT| |attr_id | BIGINT #### commodity表 |字段名|类型| |---|---| |id | BIGINT |prop_id | BIGINT | name | VARCHAR | price | DOUBLE 这几个表,一个prop可以关联多个attr数据, 使用prop_attr表来关联,是1对多,一个commodity只能关联一个prop,现在要实现以下查询功能: **查询 commodity表中的数据,但是 因为prop可以关联多个attr,所以 希望一条commodity中的数据能带上全部的attr数据,mysql查询语句么写**

MYSQL 一个比较复杂的查询语句咨询

hi 我的表的结构大致是这样的 项目编号 预计成交日期 状态更新日期 项目状态 lead-1 2016-6-4 2016-3-1 跟踪 lead-1 2016-6-5 2016-3-2 谈判中 lead-1 2016-7-5 2016-3-3 审核中 lead-2 2016-3-5 2016-3-1 跟踪 lead-2 2016-4-9 2016-3-2 审核中 想得到的结果是这样的 3月 4月 5月 6月 7月 跟踪 0 0 0 0 0 谈判中 0 0 0 0 0 审核中 0 1 0 0 1 就是我只统计每一个leadcode的最新状态的那一条数据,根据那一条数据的预计成交日和项目状态进行统计,统计的最终希望的结果如第二个表格。 这个东西,我主要是用来返回给前台给highchart画图用的。。我想把查询的结果json化之后,通过“data.项目状态.月份“或者“data.月份.项目状态”的形式来调用数据,可能做到吗? 非常感谢!

mysql 查询除了最后四条的所有数据

应该怎么写查询语句。。。而且不能删除最后四条数据。。。30个字好烦啊

mysql 查询每个分类的第一条数据 应该怎么写

比如: 分类表里有分类c1,c2,c3 id name 1 c1 2 c2 3 c3 数据表有字段id,分类cid,title,content id cid title content 1 1 第一条 内容 2 1 第二条 内容2 3 2 第三条 内容3 4 3 第四条 内容4 5 2 第五条 内容5 6 1 第六条 内容6 那么,我如何用一句sql查询列出c1,c2,c3的最新一条数据 如果我用group by cid 显示的是每个分类的早一条记录

MySql查询连续登陆天数

user_id loginTime 156061 2017-07-07 08:59:40 156069 2017-07-06 14:39:17 156061 2017-07-06 11:16:31 156061 2017-07-05 08:58:20 143432 2017-07-03 22:09:26 110681 2017-07-02 21:00:32 69 2017-06-30 14:03:48 156061 2017-06-30 09:00:05 156061 2017-06-29 10:05:27 156061 2017-06-28 09:20:54 查询156061,156069这两个用户当前连续登陆天数为3 156061 3 156069 1

Mysql查询时间区间数据

我有一张请假申请表,里面有StartTime(请假开始时间),EndTime(请假结束时间),前端查询数据的时候会传一个区间, 比如说我要查询10.01到10.31的所有请假数据,那么请假时间为9.25到10.3 的也要查出来,10.30到11.04的也要查出来,这种 Sql如何写,求大神指点。

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问