liuzhihu2016 2016-08-26 01:50 采纳率: 100%
浏览 968
已采纳

求问一个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条回答 默认 最新

  • blue小脚丫 2016-08-26 02:35
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退