参考一下create table test (p varchar2(20),s varchar2(20)); insert into test values('中国','江苏'); insert into test values('中国','浙江'); insert into test values('江苏','南京'); insert into test values('南京','鼓楼区'); insert into test values('南京','江宁区'); insert into test values('南京','白下区'); SQL> select * from test start with p='中国' connect by prior s=p;
P S -------------------- -------------------- 中国 江苏 江苏 南京 南京 鼓楼区 南京 江宁区 南京 白下区 中国 浙江
6 rows selected SQL> select * from test start with p='江苏' connect by prior s=p;
P S -------------------- -------------------- 江苏 南京 南京 鼓楼区 南京 江宁区 南京 白下区
--如查内蒙古自治区:select * from tableA where id like '15%';
树型查找时使用connect by ,start with,请参考:http://topic.csdn.net/t/20030512/23/1774674.html
insert into test values('中国','江苏');
insert into test values('中国','浙江');
insert into test values('江苏','南京');
insert into test values('南京','鼓楼区');
insert into test values('南京','江宁区');
insert into test values('南京','白下区');
SQL> select * from test start with p='中国' connect by prior s=p;
P S
-------------------- --------------------
中国 江苏
江苏 南京
南京 鼓楼区
南京 江宁区
南京 白下区
中国 浙江
6 rows selected
SQL> select * from test start with p='江苏' connect by prior s=p;
P S
-------------------- --------------------
江苏 南京
南京 鼓楼区
南京 江宁区
南京 白下区
建立层次结构表,设置四个字段如下:ID: 省\市\区ID,唯一
PID: 父ID
CC: 层次(数据仓库作为维度节点计算需要用到)
MC: 名称 例如:ID PID CC MC1000 0 0 中国1001 1000 1 广东省 --省1011 1001 2 广州市 --市 1211 1011 3 天河区 --区
1212 1011 3 白云区
1213 1011 3 海珠区1012 1001 2 深圳市 --市2011 1012 3 蛇口区 --区
2013 1012 3 东山区
2014 1012 3 高新区
MARKED BY sleepzzzzz --这样google可以找到.
直接level就可以查的出
SQL> select p,s,level from test start with p='中国' connect by prior s=p order by level;
P S LEVEL
-------------------- -------------------- ----------
中国 江苏 1
中国 浙江 1
江苏 南京 2
南京 白下区 3
南京 江宁区 3
南京 鼓楼区 3
6 rows selected
我在背OCA题库,哈哈,下个星期准备去混个证来,嘿嘿,不要BS我....