首页 > 解决方案 > 使用 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 等

先感谢您 !

标签: sql

解决方案


你的样本数据有一个简单的线性关系,三个深度。你可以用 s 处理这个left join

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);

推荐阅读