使用SQL并排显示父项和所有子项

时间:2018-07-12 00:22:14

标签: sql

假设我有一张桌子

 INPUT Table:

 Col1 | Col2 
 -----------
   A  |  B
   B  |  C
   C  |  D
   F  |  G
   G  |  H
   I  |  J
   K  | Null

我们可以编写一个SQL查询来打印这样的输出

OUTPUT Table:

Parent | C1 | C2 | C3
----------------------
   A   |  B | C  | D 
   F   |  G | H  | Null
   I   |  J | Null Null
   K   | Null Null Null

我要采取的方法是在Table2.Co2 = Table1.Col1上使用自联接 但是,我很难同时添加列和动态获取所需列数的逻辑

还有一个后续问题,如果给了我们输出表,是否可以编写查询以获取输入表

可以是任何sql-oracle,mysql等

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您的样本数据具有简单的线性关系,深度为3。您可以使用left join s来解决此问题:

select t1.col1 as parent, t2.col2 as c1, t3.col2 as c2, t4.col2 as c3
from t t1 left join
     t t2
     on t2.col1 = t1.col2 left join
     t t3
     on t3.col1 = t2.col2 left join
     t t4
     on t4.col1 = t3.col2
where not exists (select 1 from t tp where tp.col2 = t1.col1);