id | pid |
---|---|
1 | -1 |
2 | -1 |
3 | 1 |
4 | 1 |
5 | 1 |
6 | 2 |
如上表格pid是id的父节点,-1表示根节点,如果要查某个节点所在树的所有节点(根节点除外),例如查1,那么应返回1、3、4、5;查3,同样返回1、3、4、5;以下是查询sql,虽然有点繁琐,不知效率如何,还是能查出结果,哪位兄弟有简单点的方法。
select * from table where id = $id or pid = $id
or pid = (select pid from table where id= $id and pid <> -1)
or id = (select pid from table where id= $id and pid <> -1)