六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

MySQL之遞歸小問題案例分享

[摘要]mysql本身不支持遞歸語法,但可通過自連接變相實現一些簡單的遞歸,本文主要介紹了MySQL之遞歸小問題,需要的朋友可以參考下,希望能幫助到大家。--遞歸小方法:臨時表和普通表的不同方法--這題使用...
mysql本身不支持遞歸語法,但可通過自連接變相實現一些簡單的遞歸,本文主要介紹了MySQL之遞歸小問題,需要的朋友可以參考下,希望能幫助到大家。


--遞歸小方法:臨時表和普通表的不同方法
--這題使用的是2次臨時表查詢父節點的遞歸 
drop table if exists test;
create table test(
id varchar(100),
name varchar(20),
parentid varchar(100)
);
insert test select
'13ed38f1-3c24-dd81-492f-673686dff0f3', '大學教師', '37e2ea0a-1c31-3412-455a-5e60b8395f7d' union all select 
'1ce203ac-ee34-b902-6c10-c806f0f52876','小學教師', '37e2ea0a-1c31-3412-455a-5e60b8395f7d' union all select 
'37e2ea0a-1c31-3412-455a-5e60b8395f7d', '教師' ,      null                union all select 
'c877b7ea-4ed3-f472-9527-53e1618cb1dc', '高數老師', '13ed38f1-3c24-dd81-492f-673686dff0f3' union all select 
'ce50a471-2955-00fa-2fb7-198f6b45b1bd', '中學教師', '37e2ea0a-1c31-3412-455a-5e60b8395f7d';
 
delimiter $$
 
create procedure usp_ser(in idd varchar(100))
begin
declare lev int;
set lev=1;
drop table if exists tmp1;
drop table if exists tmp2;
CREATE TEMPORARY TABLE tmp1(id varchar(100),name varchar(20),parentid varchar(100),levv int);
CREATE TEMPORARY TABLE tmp2(pid varchar(100));
insert tmp2 select parentid from test where id=idd;
insert tmp1 select t.* , lev from test t join tmp2 a on t.id=a.pid;
    while exists(select 1 from tmp2 )
do
truncate tmp2;
set lev=lev+1;
insert tmp2 select t.id from test t join tmp1 a on t.id=a.parentid and a.levv=lev-1;
insert tmp1 select t.*,lev from test t join tmp2 a on t.id=a.pid;
end while ;
select id,name,parentid from tmp1;
end;
$$
 
delimiter ;
 
 call usp_ser('c877b7ea-4ed3-f472-9527-53e1618cb1dc');
+--------------------------------------+----------+--------------------------------------+
  id                    name     parentid                
+--------------------------------------+----------+--------------------------------------+
  13ed38f1-3c24-dd81-492f-673686dff0f3   大學教師   37e2ea0a-1c31-3412-455a-5e60b8395f7d  
  37e2ea0a-1c31-3412-455a-5e60b8395f7d   教師     NULL                  
+--------------------------------------+----------+--------------------------------------+
 
 call usp_ser('13ed38f1-3c24-dd81-492f-673686dff0f3');
+--------------------------------------+------+----------+
  id                    name   parentid  
+--------------------------------------+------+----------+
  37e2ea0a-1c31-3412-455a-5e60b8395f7d   教師   NULL    
+--------------------------------------+------+----------+
 
 call usp_ser('37e2ea0a-1c31-3412-455a-5e60b8395f7d');
 
Empty set (0.02 sec)


上面的方法因為由于MySQL中不允許在同一語句中對臨時表多次引用,所以用2次臨時表
下面給個一次性用普通表完成的 查詢子節點的遞歸查詢

核心代碼


drop table if exists test;
create table test(
id INT,
parentid INT
);
insert test select
1, 0 UNION ALL SELECT 
2, 1 UNION ALL SELECT 
3, 1 UNION ALL SELECT 
4, 0 UNION ALL SELECT 
5, 2 UNION ALL SELECT 
6, 5 UNION ALL SELECT 
7, 3 ;
Go
 
delimiter $$
 
create procedure usp_ser(in idd varchar(100))
begin
declare lev int;
set lev=1;
drop table if exists tmp1;
CREATE TABLE tmp1(id INT,parentid INT ,levv INT,ppath VARCHAR(1000));

INSERT tmp1 SELECT *,lev,id FROM test WHERE parentid=idd;

 while row_count()>0
do

set lev=lev+1;
insert tmp1 select t.*,lev,concat(a.ppath,t.id) from test t join tmp1 a on t.parentid=a.id AND levv=LEV-1;
 
end while ;
SELECT * FROM tmp1;
 
end;
$$
 
delimiter ;
 
 call usp_ser(0);
 
/*
+------+----------+------+-------+
  id    parentid   levv   ppath  
+------+----------+------+-------+
   1      0    1   1    
   4      0    1   4    
   2      1    2   12   
   3      1    2   13   
   5      2    3   125   
   7      3    3   137   
   6      5    4   1256  
+------+----------+------+-------+*/

相關推薦:

詳解PHP通過遞歸實現提成計算

JavaScript中遞歸函數的問題解決

遞歸調用函數方法

以上就是MySQL之遞歸小問題實例分享的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 色婷婷激婷婷深爱五月小说 | 欧美又硬又粗又长又大 | 午夜影院美女 | 香蕉视频一级 | 亚洲熟区 | 天天操天天干天天射 | 日本一本在线 | 天天干天天在线 | 特级片在线观看 | 午夜影皖| 婷婷综合七月激情啪啪 | 欧美综合亚洲图片综合区 | 欧美一区二区不卡视频 | 日韩欧美中文 | 午夜在线亚洲 | 啪啪大秀| 真实的国产乱xxxx | 最新国语自产精品视频在 | 一级特级女人18毛片免费视频 | 日韩欧美精品在线 | 日韩欧美福利视频 | 天天伊人| 深夜福利影院在线观看 | 中国性欧美 | 一级片一级毛片 | 四虎影库永久在线 | 日本视频在线免费观看 | 亚洲国产欧美精品 | 青青青青青青草 | 一个色综合网站 | 亚洲国产日韩综合久久精品 | 伊人影音 | 色综合天天综久久久噜噜噜久久〔 | 四虎免费最新在线永久 | 亚洲国产精品线播放 | 午夜性刺激在线观看视频 | 四虎精品福利视频精品 | 亚洲精品国产精品乱码不卞 | 日韩综合久久 | 五月激情婷婷综合 | 天天看天天射天天视频 |