在同一个表中选择父子行

问题描述 投票:0回答:1

我有如下表格结构

id |parent|value
1  | 0    | a |
2  | 1    | b |
3  | 4    | c |
4  | 0    | d |
5  | 0    | e |

我想只显示具有父子关系的行

喜欢:

id |parent|value
1  | 0    | a |
2  | 1    | b |
3  | 4    | c |
4  | 0    | d |
  • 每个孩子都应该有父母
  • 每个家长都应该至少有一个孩子

这是我的代码,但它无法正常工作:

select a.id, a.parent,a.value
from myTable a inner join myTable b 
on a.id = b.parent
union 
select b.id, b.child,b.value
from myTable a inner join myTable b
on a.id = b.parent;
sql
1个回答
0
投票
SELECT
  *
FROM
  yourTable
WHERE
     parent != 0
  OR EXISTS (SELECT *
               FROM yourTable children
              WHERE chilren.parent = yourTable.id
            )

第一个条件检查行是否指向父级,第二个条件检查该行是否有子级。

© www.soinside.com 2019 - 2024. All rights reserved.