mysql以及oracle的遞迴查詢

2021-06-22 14:55:25 字數 1283 閱讀 3806

在oracle中實現遞迴查詢的途徑較多

方法1:通過with子句實現遞迴

with temp(id,parentid) as (

select id,parentid

from t

where t.id = '1'

union all

select t.id, t.parentid

from temp, t

where temp.parentid = t.id)

with子句中遞迴with子句達到遞迴查詢的效果

方法2:通過oracle提供的connect by來實現

select id, parentid

from t

connect by id = prior parentid

start with id = '1';

prior在parentid前面表示向下遞迴,在id前面向上遞迴

mysql中遞迴的實現:

mysql中沒有提供connect by這種語法,也沒有with子句,那麼怎麼搞呢?我們定義乙個函式實現

delimiter //

drop function if exists querychildren;

create function `querychildren` (areaid int)

returns varchar(4000)

begin

declare stemp varchar(4000);

declare stempchd varchar(4000);

set stemp = '$';

set stempchd = cast(areaid as char);

while stempchd is not null do

set stemp = concat(stemp,',',stempchd);

select group_concat(id) into stempchd from t_areainfo where find_in_set(parentid,stempchd)>0;

end while;

return stemp;

end;

//

在sql語句使用該函式

select * from t_areainfo where find_in_set(id,querychildrenareainfo(1));

mysql以及oracle的遞迴查詢

在oracle中實現遞迴查詢的途徑較多 方法1 通過with子句實現遞迴 sql view plain copy with temp id,parentid as select id,parentid from t where t.id 1 union allselect t.id,t.parent...

oracle分頁以及mysql分頁

oracle分頁 分頁邏輯 第三層限制最小記錄數 第二層限制最大記錄數 第一層做條件限制 分頁例子 select from select from select rownum as rnum,empno from emp where rnum 10 where rnum 5 mysql分頁 sele...

通俗的理解遞

在學習遞迴的過程中,個人感覺真的晦澀難懂,遞迴就是函式自己呼叫自己。遞迴程式的基本步驟 1.初始化演算法。遞迴程式通常需要乙個開始時使用的種子值 seed value 2.要完成此任務,可以向函式傳遞引數,或者提供乙個入口函式,這個函式是非遞迴的,但可以為遞迴計算設定種子值。3.檢查要處理的當前值是...