postgres遞歸查詢所有子部門


WITH RECURSIVE T ( ID, parent_id,depart_name ) AS (
            SELECT
                A.ID,
                A.parent_id,
                a.depart_name
            FROM
                sys_depart A
            WHERE
                A.id = 'bcb9dc287fbe40178162a6f9c877f3ef' UNION ALL
            SELECT
                b.ID,
                b.parent_id ,
                b.depart_name
            FROM
                sys_depart b,
            T
            WHERE
                b.parent_id = T.id
            ) SELECT ID, parent_id as "pId",depart_name as "text" FROM T

 WITH RECURSIVE r AS (
SELECT * FROM test1 as t WHERE m_id = 18
union ALL
SELECT t.* FROM trade.merchant as t, r WHERE tree.par = r.m_id
)
SELECT * FROM r where stat = 1 ORDER BY m_id
它會一直遞歸調bai用,直到沒有記錄返回。
第一步,du會得到 SELECT * FROM test1 as t WHERE m_id = 18 ,一條記錄。zhi並放在R中
然后再執行 SELECT t.* FROM trade.merchant as t, r WHERE tree.par = r.m_id 放入R中。 之后不斷dao循環這一步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM