日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 邻接模型,【原创】MySQL 模拟Oracle邻接模型树形处理

發布時間:2023/12/2 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 邻接模型,【原创】MySQL 模拟Oracle邻接模型树形处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫對層次結構的處理模型有好多種,可以根據自己的需求來設計模型,當然最簡單的也是最容易設計的模型就是所謂的鄰接模型。在這方面,其他數據庫比如Oracle提

數據庫對層次結構的處理模型有好多種,可以根據自己的需求來設計模型,,當然最簡單的也是最容易設計的模型就是所謂的鄰接模型。在這方面,其他數據庫比如Oracle 提供了現成的分析方法 connect by,而MySQL在這方面就顯得有些薄弱了。 不過可以用MySQL的存儲過程實現ORACLE類似的分析功能

這樣,先來創建一個簡單的數表。create table country ( id number(2) not null, name varchar(60) not null);

create table country_relation (id number(2), parentid number(2));

插入一些數據-- Table country.

insert into country (id,name) values (0,'Earth');

insert into country (id,name) values (2,'North America');

insert into country (id,name) values (3,'South America');

insert into country (id,name) values (4,'Europe');

insert into country (id,name) values (5,'Asia');

insert into country (id,name) values (6,'Africa');

insert into country (id,name) values (7,'Australia');

insert into country (id,name) values (8,'Canada');

insert into country (id,name) values (9,'Central America');

insert into country (id,name) values (10,'Island Nations');

insert into country (id,name) values (11,'United States');

insert into country (id,name) values (12,'Alabama');

insert into country (id,name) values (13,'Alaska');

insert into country (id,name) values (14,'Arizona');

insert into country (id,name) values (15,'Arkansas');

insert into country (id,name) values (16,'California');-- Table country_relation.

insert into country_relation (id,parentid) values (0,NULL);

insert into country_relation (id,parentid) values (2,0);

insert into country_relation (id,parentid) values (3,0);

insert into country_relation (id,parentid) values (4,0);

insert into country_relation (id,parentid) values (5,0);

insert into country_relation (id,parentid) values (6,0);

insert into country_relation (id,parentid) values (7,0);

insert into country_relation (id,parentid) values (8,2);

insert into country_relation (id,parentid) values (9,2);

insert into country_relation (id,parentid) values (10,2);

insert into country_relation (id,parentid) values (11,2);

insert into country_relation (id,parentid) values (12,11);

insert into country_relation (id,parentid) values (13,11);

insert into country_relation (id,parentid) values (14,11);

insert into country_relation (id,parentid) values (15,11);

insert into country_relation (id,parentid) values (16,11);

在Oracle 里面,對這些操作就比較簡單了,都是系統提供的。

比如下面四種情形:

1). 查看深度,select max(level) "level" from COUNTRY_RELATION a start with a.parentid is NULL

connect by PRIOR a.id = a.PARENTID

order by level;

level

----------

4

已用時間: 00: 00: 00.03

2). 查看葉子節點select name from

(

select b.name, connect_by_isleaf "isleaf"

from COUNTRY_RELATION a inner join country b on (a.id = b.id)

start with a.parentid is NULL connect by prior a.id = a.PARENTID

) T where T."isleaf" = 1;

NAME

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

Canada

Central America

Island Nations

Alabama

Alaska

Arizona

Arkansas

California

South America

Europe

Asia

Africa

Australia

已選擇13行。

已用時間: 00: 00: 00.01

3) 查看ROOT節點select connect_by_root b.name

from COUNTRY_RELATION a inner join country b on (a.id = b.id)

start with a.parentid is NULL connect by a.id = a.PARENTID

CONNECT_BY_ROOTB.NAME

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

Earth

已用時間: 00: 00: 00.01

4). 查看路徑select sys_connect_by_path(b.name,'/') "path"

from COUNTRY_RELATION a inner join country b on (a.id = b.id)

start with a.parentid is NULL connect by prior a.id = a.PARENTID

order by level,a.id;

path

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

/Earth

/Earth/North America

/Earth/South America

/Earth/Europe

/Earth/Asia

/Earth/Africa

/Earth/Australia

/Earth/North America/Canada

/Earth/North America/Central America

/Earth/North America/Island Nations

/Earth/North America/United States

/Earth/North America/United States/Alabama

/Earth/North America/United States/Alaska

/Earth/North America/United States/Arizona

/Earth/North America/United States/Arkansas

/Earth/North America/United States/California

已選擇16行。

已用時間: 00: 00: 00.01

接下來我們看看在MySQL 里面如何實現上面四種情形:

前三種都比較簡單,可以很容易寫出SQL。

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的oracle 邻接模型,【原创】MySQL 模拟Oracle邻接模型树形处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。