国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

我對Postgresql遞歸查詢的理解

kaka / 2393人閱讀

摘要:先聲明,瞎猜的,個人理解,不一定對。重復執行步驟和,只是這里執行第步的時候,從中選出的記錄為執行第步,就變成了,就變成了找的兒子記錄如果第步返回多條記錄,類似啦,反正遞歸嘛如此,自頂向下,一棵樹就出來了

先聲明,瞎猜的,個人理解,不一定對。

遞歸查詢大家都知道,常見的如一張表,包含id(主鍵),parent_id(該記錄的父親id),比如我們要從某1個id往下找他所有的兒子還有孫子(這時候心里要有一顆樹的形象),該怎么寫?

WITH RECURSIVE cat AS (
    SELECT
        *
    FROM
        category A
    WHERE
        A . ID = 1
    UNION ALL
        SELECT
            fz.*
        FROM
            category fz
        INNER JOIN cat ON fz. parent_id = cat.id
) SELECT
    *
FROM
    cat;

解釋一下(注意RECURSIVE關鍵字):

執行子查詢SELECT * FROM category A WHERE A . ID = 1(UNION
ALL之前的部分),這個作為起點

執行外層 select * from cat(把AS后面的子查詢整體當作cat),這時候因為已經有id等于1的記錄了,所以能查到1條記錄

執行子查詢中union all后面的部分,即:select fz.* from category fz INNER JOIN cat
on fz.parent_id= cat.id,因為已經有1條記錄,即 cat.id = 1, 所以此時該語句就變成select
fz.* from category fz INNER JOIN cat on fz.parent_id =
1,也就是找parent_id(就是父親啦)等于1的記錄,換句話說,就是在fz中找id=1的記錄的兒子記錄

假如第3步找到了多條記錄(大于0,否則記錄數為0就結束了),假設有1條記錄,設該記錄為r1。重復執行步驟2和3,只是這里執行第2步的時候,從cat中選出的記錄為r1.id;執行第3步,就變成了:select
fz.* from category fz INNER JOIN cat on fz.parent_id=
r1.id,就變成了找r1的兒子記錄

如果第4步返回多條記錄,類似啦,反正遞歸嘛

如此,自頂向下,一棵樹就出來了

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38958.html

相關文章

  • PostgreSQL遞歸查詢應用場景

    摘要:今天在壇子里有人提出了一個問題,問題是這樣的在以下指定表中中國遼寧山東沈陽大連濟南和平區沈河區現在給定一個號,想得到它完整的名字。遞歸往上找,直到為止。也就是最高層級時結束,求完整語句。 今天在壇子里有人提出了一個問題,問題是這樣的:在以下指定表中 id name fatherid1 中國 02 遼寧 13 山東 14 沈陽 25 大連 26 濟南 37 和平區 48 沈河區 4 現在...

    YJNldm 評論0 收藏0
  • 讓 TiDB 訪問多種數據源 | TiDB Hackathon 優秀項目分享

    摘要:拿到返回結果進一步的進行計算處理。比較痛苦的經歷不支持,我們就只好寫內置函數,就把另外一個模塊拖下來,自己修改加上語法,然后在加上自己設計的內置函數。其次就是涉及的的源碼模塊很多,從優化器執行器內置函數以及各種各樣的結構。 本文作者是來自 CC 組的蘭海同學,他們的項目《讓 TiDB 訪問多種數據源》在本屆 TiDB Hackathon 2018 中獲得了二等獎。該項目可以讓 TiDB...

    OBKoro1 評論0 收藏0
  • 讓 TiDB 訪問多種數據源 | TiDB Hackathon 優秀項目分享

    摘要:拿到返回結果進一步的進行計算處理。比較痛苦的經歷不支持,我們就只好寫內置函數,就把另外一個模塊拖下來,自己修改加上語法,然后在加上自己設計的內置函數。其次就是涉及的的源碼模塊很多,從優化器執行器內置函數以及各種各樣的結構。 本文作者是來自 CC 組的蘭海同學,他們的項目《讓 TiDB 訪問多種數據源》在本屆 TiDB Hackathon 2018 中獲得了二等獎。該項目可以讓 TiDB...

    JasonZhang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<