業務 場景:
表中存有上級組織 字段,組織負責人字段,現需返回當前組織負責人及其所有上級組織的負責人, 並以當前組織排序為1,上級組織排序為2,以此類推。
實現方法如下:
drop procedure if exists pt_structure_getprincipal;
create procedure pt_structure_getprincipal(
v_stru_id varchar(80) -- 組織id
)sql security invoker
begin
declare lev int;
set lev=1;
-- 建立結果臨時表
drop table if exists temp_pt_structure;
create table temp_pt_structure(
stru_id varchar(36),
org_name varchar(100),
parent_stru_id varchar(36),
principal_staff_id varchar(36),
lev int
) engine=memory;
insert into temp_pt_structure(stru_id,org_name,parent_stru_id,principal_staff_id,lev)
select stru_id,org_alias,parent_stru_id,principal_staff_id,0
from pt_structure
where stru_id=v_stru_id;
insert into temp_pt_structure(stru_id,org_name,parent_stru_id,principal_staff_id,lev)
select ps.stru_id,ps.org_alias,ps.parent_stru_id,ps.principal_staff_id,1
from pt_structure ps
join temp_pt_structure tps on ps.stru_id=tps.parent_stru_id;
-- 遍歷上級組織
while row_count()>0
do set lev=lev+1;
insert into temp_pt_structure(stru_id,org_name,parent_stru_id,principal_staff_id,lev)
select ps.stru_id,ps.org_alias,ps.parent_stru_id,ps.principal_staff_id,lev
from pt_structure ps
join temp_pt_structure tps on ps.stru_id=tps.parent_stru_id and tps.lev=lev-1;
end while;
select principal_staff_id,(@rownum:=@rownum+1) num from temp_pt_structure join (select @rownum:=0) t;
drop table temp_pt_structure;
end;
mysql名 組織 mysql組織結構
1.資料的組織結構 1 層次型 2 網狀型 3 關係型 2.mysql軟體包格式 1 軟體包管理器特有的格式 rpm包 2 通用二進位製包 解壓玩就能用 3 源程式 原始碼包 3.mysql是c s架構 客戶端 mysql 要安裝的包 mysql 服務端 mysqld 要安裝的包 mysql ser...
mysql堆表和索引組織 堆表與索引組織表
堆表 資料存放在資料裡面,索引存放在索引裡 堆就是無序資料的集合,索引就是將資料變得有序,在索引中鍵值有序,資料還是無序的 堆表中,主鍵索引和普通索引一樣的,葉子節點存放的是指向堆表中資料的指標 可以是乙個頁編號加偏移量 指向實體地址,沒有回表的說法 堆表中,主鍵和普通索引基本上沒區別,和非空的唯一...
mysql 組織層級查詢 mysql 層級結構查詢
描述 最近遇到了乙個問題,在mysql中如何完成節點下的所有節點或節點上的所有父節點的查詢?在oracle中我們知道有乙個hierarchical queries可以通過connect by來查詢,但是,在mysql中還沒有對應的函式 下面給出乙個function來完成的方法 下面是sql指令碼,想...