mysql不支援級聯查詢 mysql級聯查詢

2021-10-19 03:46:24 字數 1361 閱讀 5326

實現效果 例如:  中國 下的 省 市 縣 鄉

輸入 省的id 能把該省下的市,縣,鄉全部查出來,輸入該市的id 可以把 該市下的 縣,鄉全部查出來

oracle 級聯查詢:oracle有內建函式  start with …connect by prior 直接實現級聯效果如

select a.* from t_depart  a start with depid=』213520′ connect by prior depid=pdepid

depid是指 部門編號, pdepid是指上級部門編號

depid=』213520′  是指查遞迴depid=213520的部門即查出 depid是213520

的子節點,孫節點,重孫節點,……

不過在mysql 中就有點麻煩了,得建立方法,並呼叫:

mysql中:建立function:

delimiter $$

use `device`$$

drop function if exists `getchildlist`$$

create definer=`root`@`localhost` function `getchildlist`(rootid varchar(100)) returns varchar(1000) charset utf8

begin

declare ptemp varchar(1000);

declare ctemp varchar(1000);

set ptemp = 『$』;

set ctemp = rootid;

while ctemp is not null do

set ptemp = concat(ptemp,』,』,ctemp);

select group_concat(depid) into ctemp from

t_depart

where find_in_set(pdepid,ctemp)>0;

end while;

return ptemp;

end$$

delimiter ;

通過select getchildlist(『213520『) from dual 可以驗證查出 id是213520及它以下節點的id 例如 我的結果是

$,213520,21352012,21352013

通過select * from 『t_depart』 where find_in_set (depid,getchildlist(『213520『));

就會查出 t_depart這個表中,

id = 『213520』 及其子孫節點的詳細資訊。

分享到:

2017-11-30 16:48

瀏覽 797

分類:資料庫

mysql不支援 MySQL不支援的特性

mysql 1 不支援物化檢視。2 不支援位圖索引。3 不支援並行查詢。4 不支援雜湊關聯,mysql的所有關聯都是巢狀迴圈關聯。不過,可以通過建立乙個雜湊索引來曲線實現。5 不允許對同一表同時進行查詢和更新。報錯 update tb1 as outer tb1 set cnt select cou...

mysql級聯查詢

實現效果 例如 中國 下的 省 市 縣 鄉 輸入 省的id 能把該省下的市,縣,鄉全部查出來,輸入該市的id 可以把 該市下的 縣,鄉全部查出來 oracle 級聯查詢 oracle有內建函式 start with connect by prior 直接實現級聯效果如 select a.from t...

mysql不支援top 支援limit

今天偶爾發現mysql居然不支援top語句,之前用hibernate記得用過top語句。原因是 mysql的確是不支援top語句,之前用的是hql語句,是hibernate幫你翻譯成mysql支援的語句的。通常hibernate的用法 select top 5 id,name,password fr...