树形结构表查询,只用一条SQL语句查询所有父级ID

zhdan 发布于 2016/06/15 22:54
阅读 1K+
收藏 0
SQL
表字段:ID,Tname,Pid   
Pid是上级ID

现在通过ID查询出所有父级ID。


加载中
0
宏哥
宏哥

首先, 如果你用mysql,就不可能

宏哥说了,mysql不是数据库

0
Steve
Steve

关键是你的id和pid的设计规则,按照下图这么设计,然后SQL一个like语句就可以搞定了.

0
dy810810
dy810810

自关联表

存的时候把自己的父级id都串一存起来

0
一号男嘉宾
一号男嘉宾
递归查询可以实现哇。mysql木有这个功能。但是可以这个函数来实现
0
乌龟壳
乌龟壳
写一个函数,在函数里递归找到所有上级
0
mark35
mark35
mysql就不用折腾了,递归查询吧
0
宏哥
宏哥

引用来自“mark35”的评论

mysql就不用折腾了,递归查询吧
postgresql 在OLAP你有没有好的实践
mark35
mark35
目前没有
0
空无一长物

oracle:select pid from table where id = '你的输入' connect by prior id = pid

mysql:自己写函数吧

0
huan
huan
左右值存储,非常常用的树存储方式。网上搜一下实现方式。
0
mi-la-king
mi-la-king

可以来一个 函数实现  

COLLATE utf8_bin

BEGIN
       DECLARE sTemp VARCHAR(2000); 
       DECLARE sTempPar VARCHAR(2000); 
    
       SET sTemp = '$';
       SET sTempPar = cast(childId as CHAR);
    
       WHILE sTempPar is not null DO
         SET sTemp = concat(sTemp,',',sTempPar);
         SELECT group_concat(pid) INTO sTempPar FROM auth_org where pid<>id and FIND_IN_SET(id,sTempPar)>0;
       END WHILE;
       RETURN sTemp;

     END


使用时候 

where  FIND_IN_SET(pid, getParentLst(xxxx)) 

返回顶部
顶部