工作中使用到的connect by查询

建表语句:
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语句是将结果集进行过滤的:



猜你喜欢

转载自blog.csdn.net/baidu_14922873/article/details/78846874
今日推荐