假设我们有以下信息表
id name level Parent_id
1 A 1 ---
2 B 1 ----
3 C 2 1
4 D 2 2
5 E 3 3
6 F 3 4
7 G 4 5
8 H 4 5
我想要这种格式的结果。
id L1Name L2 Name L3 Name L4Name
1 A - - -
2 B - - -
3 A C - -
4 B D - -
5 A C E -
6 B D F -
7 A C E G
8 A C E H
我希望这个结果在mysql中。我们可以通过使用Connect by prior在oracle中找到它。在mysql.please帮助中怎么样。
答案 0 :(得分:1)
select id , L1Name, L2Name , L3Name , L4Name
from (
select id ,
if(level =1 , name , '--') L1Name ,
if(level =2 , name , '--') L2Name ,
if(level =3 , name , '--') L3Name ,
if(level =4 , name , '--') L4Name
from Table1
)t
编辑:
试试这个
SELECT id, L1Name, L2Name , L3Name , L4Name
FROM (
SELECT id,
IF(id in(1,3,5,7), 'A' , 'B') L1Name ,
IF(id in(3,5,7) , 'C' , if(id in(1,2), '-', 'D')) L2Name ,
IF(id in(5,7),'E',if(id in(1,2,3,4), '-', 'F')) L3Name ,
IF(id =7 , 'G' , if(id in(1,2,3,4,5,6), '-', 'H')) L4Name
FROM Table1
)t