中易网

在MYSQL中用一条SQL查询出ID ,NAME,父ID,父NAME; 表结构为:ID NAME P_ID

答案:2  悬赏:30  
解决时间 2021-01-11 08:59
  • 提问者网友:温旧梦泪无声
  • 2021-01-10 19:15
在MYSQL中用一条SQL查询出ID ,NAME,父ID,父NAME; 表结构为:ID NAME P_ID
最佳答案
  • 二级知识专家网友:woshuo
  • 2021-01-10 20:29
创建一个function getChildLst, 得到一个由所有子节点号组成的字符串.

mysql> delimiter //
mysql>
mysql> CREATE FUNCTION `getChildLst`(rootId INT)
-> RETURNS varchar(1000)
-> BEGIN
-> DECLARE sTemp VARCHAr(1000);
-> DECLARE sTempChd VARCHAr(1000);
->
-> SET sTemp = '$';
-> SET sTempChd =cast(rootId as CHAR);
->
-> WHILE sTempChd is not null DO
-> SET sTemp = concat(sTemp,',',sTempChd);
-> SELECt group_concat(id) INTO sTempChd FROM treeNodes where FIND_IN_SET(pid,sTempChd)>0;
-> END WHILE;
-> RETURN sTemp;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> delimiter ;

使用我们直接利用find_in_set函数配合这个getChildlst来查找

mysql> select getChildLst(1);
+-----------------+
| getChildLst(1)|
+-----------------+
| $,1,2,3,4,5,6,7 |
+-----------------+
1 row in set (0.00 sec)
全部回答
  • 1楼网友:思契十里
  • 2021-01-10 20:50
select b.id,b.name,a.id,a.name from
test a,test b where
a.id=b.p_id

表名test,自己换一下你自己的表名
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息