使用mysql實(shí)現(xiàn)oracle的connectby功能方法

本文主要給大家介紹使用MySQL實(shí)現(xiàn)oracle的connect by功能方法,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對(duì)性,對(duì)大家的參考意義還是比較大的,下面跟筆者一起了解下使用mysql實(shí)現(xiàn)oracle的connect by功能方法吧。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到港口網(wǎng)站設(shè)計(jì)與港口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋港口地區(qū)。

1.生成測(cè)試表與數(shù)據(jù):
create table mytest
 (
  id int primary key,
  nodename varchar(20),
  pid int
 );
insert into mytest (id,nodename,pid)values(  1 ,'A', 0);
insert into mytest (id,nodename,pid)values(  2 ,'B', 1);
insert into mytest (id,nodename,pid)values(  3 ,'C', 1);
insert into mytest (id,nodename,pid)values(  4 ,'D', 2);
insert into mytest (id,nodename,pid)values(  5 ,'E', 2);
insert into mytest (id,nodename,pid)values(  6 ,'F', 3);
insert into mytest (id,nodename,pid)values(  7 ,'G', 6);
insert into mytest (id,nodename,pid)values(  8 ,'H', 0);
insert into mytest (id,nodename,pid)values(  9 ,'I', 8);
insert into mytest (id,nodename,pid)values( 10 ,'J', 8);
insert into mytest (id,nodename,pid)values( 11 ,'K', 8);
insert into mytest (id,nodename,pid)values( 12 ,'L', 9);
insert into mytest (id,nodename,pid)values( 13 ,'M', 9);
insert into mytest (id,nodename,pid)values( 14 ,'N',12);
insert into mytest (id,nodename,pid)values( 15 ,'O',12);
insert into mytest (id,nodename,pid)values( 16 ,'P',15);
insert into mytest (id,nodename,pid)values( 17 ,'Q',15);

2.創(chuàng)建函數(shù):
delimiter $$
CREATE FUNCTION `getParentList` (rootId VARCHAR (50)) RETURNS VARCHAR (1000)
 BEGIN
  DECLARE sParentList VARCHAR (1000) ;
  DECLARE sParentTemp VARCHAR(1000);
  SET sParentTemp =CAST(rootId AS CHAR);
  WHILE sParentTemp IS NOT NULL DO
  IF (sParentList IS NOT NULL) THEN
  SET sParentList = CONCAT(sParentTemp,'/',sParentList);
  ELSE
  SET sParentList = CONCAT(sParentTemp);
  END IF;
 SELECT GROUP_CONCAT(pid) INTO sParentTemp FROM mytest WHERE FIND_IN_SET(id,sParentTemp)>0;
 END WHILE;
 RETURN sParentList;
 END$$
 DELIMITER ;

3.測(cè)試驗(yàn)證:
set global log_bin_trust_function_creators=1;
SELECT id,pid,getParentList(id) FROM mytest;

mysql> SELECT id,pid,getParentList(id) FROM mytest;
+----+------+-------------------+
| id | pid  | getParentList(id) |
+----+------+-------------------+
|  1 |    0 | 0/1               |
|  2 |    1 | 0/1/2             |
|  3 |    1 | 0/1/3             |
|  4 |    2 | 0/1/2/4           |
|  5 |    2 | 0/1/2/5           |
|  6 |    3 | 0/1/3/6           |
|  7 |    6 | 0/1/3/6/7         |
|  8 |    0 | 0/8               |
|  9 |    8 | 0/8/9             |
| 10 |    8 | 0/8/10            |
| 11 |    8 | 0/8/11            |
| 12 |    9 | 0/8/9/12          |
| 13 |    9 | 0/8/9/13          |
| 14 |   12 | 0/8/9/12/14       |
| 15 |   12 | 0/8/9/12/15       |
| 16 |   15 | 0/8/9/12/15/16    |
| 17 |   15 | 0/8/9/12/15/17    |
+----+------+-------------------+
17 rows in set (0.01 sec)

看完以上關(guān)于使用mysql實(shí)現(xiàn)oracle的connect by功能方法,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識(shí)信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。

當(dāng)前文章:使用mysql實(shí)現(xiàn)oracle的connectby功能方法
網(wǎng)站地址:http://muchs.cn/article0/iepjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作搜索引擎優(yōu)化、軟件開發(fā)、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司