有一张菜单表(menu),字段:menuId,parentIdSELECT * FROM menu t WHERE t.menuId = 3这样查出来个子节点,怎样才能把它的父节点一并查出来我现在的做法是:SELECT * FROM menu t WHERE t.menuId = 3
OR ( t.menuId IN(SELECT m.parentId FROM menu m WHERE m.menuId = 3) )不知道还有没其它好的方法

解决方案 »

  1.   

    ;with cte as(
      SELECT * FROM menu WHERE menuId = 3
      union all
      SELECT A.* FROM menu a,cte b where a.menuId=b.parentId
    )
    select * from cte
      

  2.   


    忘记说了,我用的是MYSQL,这个先去试下
      

  3.   

    就是一张菜单表(menu),字段:menuId(主键自增),parentId
    里面有两条记录
    menuId     parentId
    1            0
    3            1
    其中第一条记录是父节点,子节点就是第二条了我查出了子节点,怎样把它的父节点一起查出来