mysql 使用存储过程查询所有子类id

吉他猪 2014-11-27 01:13:56

BEGIN
DECLARE sTemp text;
DECLARE sTempChd text;
SET sTemp = '';
SET sTempChd =CAST(rootId AS CHAR);
WHILE sTempChd IS NOT NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT GROUP_CONCAT(id) INTO sTempChd FROM notes WHERE FIND_IN_SET(parentid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END

上面的方法会漏掉一些id,能不能换个方法实现
...全文
334 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉他猪 2014-11-27
  • 打赏
  • 举报
回复
我用了存储过程加临时表的方式解决了,谢谢各位
ACMAIN_CHM 2014-11-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/acmain_chm/article/details/4142971 MySQL中进行树状所有子节点的查询 在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们..
benluobo 2014-11-27
  • 打赏
  • 举报
回复
给你个例子 CREATE FUNCTION topoFolderFun(folderIdTmp bigint(20)) RETURNS varchar(1000) DETERMINISTIC begin declare sTemp varchar(1000); declare sTempChd varchar(1000); set sTemp = ''; set sTempChd = cast(folderIdTmp as char); lable : loop set sTemp = concat(sTemp,',',sTempChd); select group_concat(folderId) into sTempChd from topofolder where find_in_set(superiorId, sTempChd) > 0; if found_rows()=0 or sTempChd is null then return substring(sTemp,2); end if; end loop; end$$

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧