网上一道QQ的SQL题目 老猫

朱哥发给我做的。

一、有如下表
id  parentid  name
1        0        电脑

2        1        笔记本

3        1       台式机
4        1        服务器
5        2        联想
6        5        T40

根据上表数据,查询出:

1   电脑
2   电脑 - 笔记本
3   电脑 - 台式机

4   电脑 - 服务器

5   电脑 - 笔记本 - 联想

6   电脑 - 笔记本 - 联想 - T40

--------------------------------------------------------

create table test_03(
  id int,
  parentid int,
 name varchar2(20)
 );

insert into test_03 values (1,0,'电脑');
insert into test_03 values (2,1,'笔记本');
insert into test_03 values (3,1,'台式机');
insert into test_03 values (4,1,'服务器');
insert into test_03 values (5,2,'联想');
insert into test_03 values (6,5,'T40');
commit;

select * from test_03;

select * from test_03 start with id = 6 connect by prior parentid = id;

select id, ltrim(sys_connect_by_path(name, '-'),'-') names
  from test_03
 start with id = 1
connect by prior id = parentid
 order by id;
 

 


 

原文地址:https://www.cnblogs.com/oldcat/p/2156499.html