小猿圈之MySql遞歸查詢

無論學習什麼語言,python、java、php等等若是你之後的方向是web,那麼你都離不開數據庫,mysql數據庫又是開源的,因此是最受歡迎的數據庫,也是企業用的最多的數據庫,小猿圈老師詳解mysql的遞歸查詢,不懂的同窗能夠看過來了。php

1、遞歸語句java

-- 向下遞歸函數python

SELECT GROUP_CONCAT('''', pk_dept , '''')  FROM rzzxdb.bi_dept WHERE FIND_IN_SET(fr_pk_dept,'1070')>0;

設置某個部門下的全部子部門爲無效:mysql

update bi_dept set zt ='0' WHERE FIND_IN_SET(fr_pk_dept,'部門ID')>0;

2、自定義遞歸函數web

利用find_in_set()函數和group_concat()函數實現遞歸查詢:、sql

一、向下遞歸:數據庫

調用方式:函數

SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(4));

實例:學習

DROP FUNCTION IF EXISTS queryChildrenAreaInfo;

CREATE FUNCTION queryChildrenAreaInfo(areaId INT) -- 或者 areaId char

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;

二、向上遞歸code

調用方式:

SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenAreaInfo1(7));

實例:

DROP FUNCTION IF EXISTS queryChildrenAreaInfo1;

CREATE FUNCTION queryChildrenAreaInfo1(areaId INT)

RETURNS VARCHAR(4000)

BEGIN

DECLARE sTemp VARCHAR(4000);

DECLARE sTempChd VARCHAR(4000);

SET sTemp='$';

SET sTempChd = CAST(areaId AS CHAR);

SET sTemp = CONCAT(sTemp,',',sTempChd);

SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;

WHILE sTempChd <> 0 DO

SET sTemp = CONCAT(sTemp,',',sTempChd);

SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;

END WHILE;

RETURN sTemp;

END;

mysql遞歸方式分爲向上遞歸和向下遞歸,小猿圈老師詳解的mysql遞歸就到這了,想必你們看後有所瞭解了,學明白的同窗感受收穫滿滿,有問題的朋友能夠去小猿圈看看老師的視頻詳解,也許看後你會更加深刻的瞭解。

相關文章
相關標籤/搜索