表结构
caId caLevel caName caSuperior
1 1 基础设施 0
2 1 社会事业 0
3 2 公路建设 1
4 2 电网改造 2
5 3 高速路 3
6 3 大电网 4只有3级,怎么用sql语句查询出来下面这种结果的
caId caLevel caName caSuperior
1 1 基础设施 0
3 2 公路建设 1
5 3 高速路 3
2 1 社会事业 0
4 2 电网改造 2
6 3 大电网 4
求大神呀,急急,明天项目要考核了MySQL树形结构 sql查询
caId caLevel caName caSuperior
1 1 基础设施 0
2 1 社会事业 0
3 2 公路建设 1
4 2 电网改造 2
5 3 高速路 3
6 3 大电网 4只有3级,怎么用sql语句查询出来下面这种结果的
caId caLevel caName caSuperior
1 1 基础设施 0
3 2 公路建设 1
5 3 高速路 3
2 1 社会事业 0
4 2 电网改造 2
6 3 大电网 4
求大神呀,急急,明天项目要考核了MySQL树形结构 sql查询
解决方案 »
- sql查询问题
- like语句后面加上逻辑表达式的不解
- administrator command: Prepare 是什么?求教
- mysql 安装到windows xp embeddad最后一步mysql Apply security settings 错误
- MySql数据库 恢复删除Delete From
- 请教一个jdbc连mysql的奇怪问题,连接只能支持一天,第一天什么问题都没有,第二天早上报措:急死了!分不够再
- 关于一个不好处理的order by 有难度
- 请教:MySQL数据库死锁的问题
- mysql中如何按 年 月 日 这三个参数进行数据查询
- 请问怎样才可以把MYSQL里的数据倒入SQL? ???
- 查询最新的日期
- 英文不太好,求鉴定Dropbox的这个数据库服务的功能和限制
MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...
先使用递归查询出需要查询的 caid ,之后再根据caid到表中查询
递归函数如下:
CREATE
FUNCTION getChildLst(caId varchar(300) CHARACTER SET utf8)
RETURNS varchar(1000) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =caId;
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT GROUP_CONCAT(`caId`) INTO sTempChd from ca where FIND_IN_SET(caSuperior,sTempChd)>0;
END WHILE;
RETURN sTemp;
END