在同一表格中选择“父子行”

时间:2019-03-29 14:20:53

标签: sql

我的表格结构如下

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;

1 个答案:

答案 0 :(得分:0)

SELECT
  *
FROM
  yourTable
WHERE
     parent != 0
  OR EXISTS (SELECT *
               FROM yourTable children
              WHERE chilren.parent = yourTable.id
            )

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