建表语句: CREATE TABLE dm_connectby_jg( jg_dm varchar(20), jg_mc varchar(200), jg_bz char(1), sj_jg_dm varchar(20) ); INSERT INTO dm_connectby_jg VALUES ('0','中国', 'Q', 'ffffffff'); INSERT INTO dm_connectby_jg VALUES ('1','河北省', 'J', '0'); INSERT INTO dm_connectby_jg VALUES ('2','河南省', 'J', '0'); INSERT INTO dm_connectby_jg VALUES ('3','山西省', 'J', '0'); INSERT INTO dm_connectby_jg VALUES ('4','太原市', 'J', '3'); INSERT INTO dm_connectby_jg VALUES ('5','吕梁市', 'J', '3'); INSERT INTO dm_connectby_jg VALUES ('6','古交市', 'J', '3'); INSERT INTO dm_connectby_jg VALUES ('7','晋中市', 'J', '3'); INSERT INTO dm_connectby_jg VALUES ('8','文水县', 'B', '5'); INSERT INTO dm_connectby_jg VALUES ('9','交城县', 'B', '5'); INSERT INTO dm_connectby_jg VALUES ('10','祁县', 'B', '7'); INSERT INTO dm_connectby_jg VALUES ('11','平遥县', 'B', '7'); INSERT INTO dm_connectby_jg VALUES ('12','南安镇', 'B', '8'); INSERT INTO dm_connectby_jg VALUES ('13','南庄镇', 'B', '8'); INSERT INTO dm_connectby_jg VALUES ('14','南白镇', 'B', '8');需要注意的是:当前测试的数据库是工作中使用的一个国产化数据库,ShengTong数据库。未测试其他数据库中的情形。
直接使用查询该表,默认的结果顺序如下所示:
只使用connect by结果不变
当我使用如下语句时,查询结果没有效果。
交换查询connect by后面条件,结果一样:
说明在这种数据库中必须使用PRIOR关键字。
使用PRIOR关键字修饰的字段作为左主字段,也就是取jg_dm=’8’的记录的jg_dm,与其他的记录的sj_jg_dm相等,然后循环去除所有。
下面数据显示的顺序为第一张图片的顺序取出的:
向上循环取数据,使用start with取得数据的sj_jg_dm等于其他数据的jg_dm取数据:
使用where语句是将结果集进行过滤的: