mysql查询查询树结构,通过树结构查询一个自己昵称和父级节点的昵称

题目:一张表里面有三个属性:主键自增ID,父级PID,自己名字NAME,要求以自己的方式查出来。要求如下:

表里内容:

ID PID  NAME

1     0         张三

2 1         李四

3 1         王五

4 2        赵六


题目要求显示结果:


ID NAME   PNAME(父节点姓名)

1 张三       NULL

2 李四       张三

3 王五       张三

4 赵六       李四




通过传参差一个:

select nickname,pdate,



(select nickname  from qrtable where openid in
 (
select popenid from qrtable where openid='oj2ya0-OSplH0Vf4CArgtzEFTnf4'
 ) ) as pnickname
from qrtable

where openid='oj2ya0-OSplH0Vf4CArgtzEFTnf4';




不通过传参查询所有:

通过自己定义的格式将所有的显示出来的方式有两种:

1.左连接:

SELECT e.`openid`,e.`nickname`,l.`nickname`  FROM qrtable e  LEFT JOIN qrtable l
ON e.`popenid`=l.`openid`;

2.

 select a.id,a.name,
case b.name 
when a.name then 'None'
else b.name end as pname
from chuan as a join chuan as b on a.pid = b.id OR a.pid=0 GROUP BY a.id;



题目要求:
查询名字、他的子节点个数、二级节点个数
SELECT e.`nickname`,COUNT(e.openid= l.popenid) number1 ,(SELECT COUNT(*) FROM qrtable WHERE popenid=l.openid )number2 FROM 
qrtable e LEFT JOIN  qrtable l
ON e.openid = l.popenid where e.pdate between '2015-10-01' and '2017-08-01'
group by e.`nickname`  ; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值