實現效果 例如: 中國 下的 省 市 縣 鄉
輸入 省的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...