mysql如何无限极查找最顶层id节点

liuzhihu2016 2016-08-26 05:40:32
我就是用mysql 编写存储过程。
目标是获得顶层的id。
表结构是:
pid name id

简单的表数据如下:

pid name id

1 a 2

2 b 3

3 c 4

4 d 5

5 e 6
. . .

. . .

. . .

799 aa 800
800 ab 801



就是现在我随意输入一个pid 为3 那么我找到它的最顶层pid 就是 1.

我输入的pid 为799 ,那么它的最下级就是800.


现在我想写出存储过程, 就是随意输入pid 分别获得他的升级和下级,这个应该怎么写。


为什么我写的就是报错了呢。


是mysql的数据库。


DELIMITER $$;
CREATE PROCEDURE test(IN sid INT,OUT xid INT)
BEGIN
DECLARE i INT; 
SET i=(SELECT id FROM admin WHERE id=sid);
WHILE i > 0
DO
SET i=(SELECT id FROM admin WHERE id=i);
END WHILE;
SELECT i INTO xid;
END $$
DELIMITER ;  


拜求了!

...全文
1073 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2016-08-27
  • 打赏
  • 举报
回复
错误提示是什么?
zjcxc 2016-08-27
  • 打赏
  • 举报
回复
不知道你写的是求上级,不是下级 上经顶级通常是唯一的,子级未级通常是有好多的(这种情况网上的盗汗最多,建议直接搜索) 上级顶级的话,r看你的结构,应该是取 SELECT pid
zjcxc 2016-08-27
  • 打赏
  • 举报
回复
SET i=(SELECT id FROM admin WHERE id=i); --------------- 这里看起来是死循环

56,677

社区成员

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

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