摘要:先聲明,瞎猜的,個(gè)人理解,不一定對(duì)。重復(fù)執(zhí)行步驟和,只是這里執(zhí)行第步的時(shí)候,從中選出的記錄為執(zhí)行第步,就變成了,就變成了找的兒子記錄如果第步返回多條記錄,類似啦,反正遞歸嘛如此,自頂向下,一棵樹就出來了
先聲明,瞎猜的,個(gè)人理解,不一定對(duì)。
遞歸查詢大家都知道,常見的如一張表,包含id(主鍵),parent_id(該記錄的父親id),比如我們要從某1個(gè)id往下找他所有的兒子還有孫子(這時(shí)候心里要有一顆樹的形象),該怎么寫?
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之前的部分),這個(gè)作為起點(diǎn)
執(zhí)行外層 select * from cat(把AS后面的子查詢整體當(dāng)作cat),這時(shí)候因?yàn)橐呀?jīng)有id等于1的記錄了,所以能查到1條記錄
執(zhí)行子查詢中union all后面的部分,即:select fz.* from category fz INNER JOIN cat
on fz.parent_id= cat.id,因?yàn)橐呀?jīng)有1條記錄,即 cat.id = 1, 所以此時(shí)該語句就變成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步的時(shí)候,從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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38958.html
摘要:今天在壇子里有人提出了一個(gè)問題,問題是這樣的在以下指定表中中國(guó)遼寧山東沈陽大連濟(jì)南和平區(qū)沈河區(qū)現(xiàn)在給定一個(gè)號(hào),想得到它完整的名字。遞歸往上找,直到為止。也就是最高層級(jí)時(shí)結(jié)束,求完整語句。 今天在壇子里有人提出了一個(gè)問題,問題是這樣的:在以下指定表中 id name fatherid1 中國(guó) 02 遼寧 13 山東 14 沈陽 25 大連 26 濟(jì)南 37 和平區(qū) 48 沈河區(qū) 4 現(xiàn)在...
摘要:拿到返回結(jié)果進(jìn)一步的進(jìn)行計(jì)算處理。比較痛苦的經(jīng)歷不支持,我們就只好寫內(nèi)置函數(shù),就把另外一個(gè)模塊拖下來,自己修改加上語法,然后在加上自己設(shè)計(jì)的內(nèi)置函數(shù)。其次就是涉及的的源碼模塊很多,從優(yōu)化器執(zhí)行器內(nèi)置函數(shù)以及各種各樣的結(jié)構(gòu)。 本文作者是來自 CC 組的蘭海同學(xué),他們的項(xiàng)目《讓 TiDB 訪問多種數(shù)據(jù)源》在本屆 TiDB Hackathon 2018 中獲得了二等獎(jiǎng)。該項(xiàng)目可以讓 TiDB...
摘要:拿到返回結(jié)果進(jìn)一步的進(jìn)行計(jì)算處理。比較痛苦的經(jīng)歷不支持,我們就只好寫內(nèi)置函數(shù),就把另外一個(gè)模塊拖下來,自己修改加上語法,然后在加上自己設(shè)計(jì)的內(nèi)置函數(shù)。其次就是涉及的的源碼模塊很多,從優(yōu)化器執(zhí)行器內(nèi)置函數(shù)以及各種各樣的結(jié)構(gòu)。 本文作者是來自 CC 組的蘭海同學(xué),他們的項(xiàng)目《讓 TiDB 訪問多種數(shù)據(jù)源》在本屆 TiDB Hackathon 2018 中獲得了二等獎(jiǎng)。該項(xiàng)目可以讓 TiDB...
閱讀 829·2021-10-13 09:39
閱讀 3709·2021-10-12 10:12
閱讀 1760·2021-08-13 15:07
閱讀 1019·2019-08-29 15:31
閱讀 2894·2019-08-26 13:25
閱讀 1785·2019-08-23 18:38
閱讀 1890·2019-08-23 18:25
閱讀 1863·2019-08-23 17:20