liuzhihu2016
liuzhihu2016
采纳率100%
2016-08-26 01:50 阅读 961
已采纳

求问一个mysql的存储过程,求大神解答,谢谢

mysql数据库中,有一个表
表中有两个字段 id 和pid

如同这种
id pid
1 2

2 3

3 4

省略号

800 801

这种,就是我输入一个id 为800的 如何能够找出他的所有上级 上级的意思就是我id=800的
和上面的pid 相等,并且一层层的找上去这种。

请问一下 各位大神有人会吗?

我写不出来了。
拜求大神解答!

这是我写的:

 DELIMITER //

CREATE PROCEDURE test(IN id INT,OUT mainid  INT )

BEGIN 
   SELECT  @pidNum= (SELECT    pid  FROM admin WHERE admin.pid=3 ) 

   WHILE ( @pidNum !=  -1 )
           BEGIN
              SELECT  id = (SELECT id FROM admin WHERE admin.id=@pidNum ) 
           END 

           SET  mainid=@id      

       END      

DELIMITER ;

不过是错的

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    daxia_DN blue小脚丫 2016-08-26 02:35

    定义一个变量temp,每找到一个pid就把pid的值赋给temp,当没有pid的时候就赋值为-1,使用while循环,只要temp!=-1就一直循环。

    点赞 评论 复制链接分享
  • liuzhihu2016 liuzhihu2016 2016-08-26 02:31

    拜求各位大神,给看看呀!谢谢了!

    点赞 评论 复制链接分享
  • yicp123 yicp123 2016-08-26 03:57
    点赞 评论 复制链接分享

相关推荐