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

資訊專欄INFORMATION COLUMN

我對Postgresql遞歸查詢的理解

kaka / 2384人閱讀

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

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

遞歸查詢大家都知道,常見的如一張表,包含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關(guān)鍵字):

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

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

執(zhí)行子查詢中union all后面的部分,即:select fz.* from category fz INNER JOIN cat
on fz.parent_id= cat.id,因為已經(jīng)有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,否則記錄數(shù)為0就結(jié)束了),假設(shè)有1條記錄,設(shè)該記錄為r1。重復(fù)執(zhí)行步驟2和3,只是這里執(zhí)行第2步的時候,從cat中選出的記錄為r1.id;執(zhí)行第3步,就變成了:select
fz.* from category fz INNER JOIN cat on fz.parent_id=
r1.id,就變成了找r1的兒子記錄

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38958.html

相關(guān)文章

  • PostgreSQL遞歸查詢應(yīng)用場景

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

    YJNldm 評論0 收藏0
  • 讓 TiDB 訪問多種數(shù)據(jù)源 | TiDB Hackathon 優(yōu)秀項目分享

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

    OBKoro1 評論0 收藏0
  • 讓 TiDB 訪問多種數(shù)據(jù)源 | TiDB Hackathon 優(yōu)秀項目分享

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

    JasonZhang 評論0 收藏0

發(fā)表評論

0條評論

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