摘要:先聲明,瞎猜的,個人理解,不一定對。重復(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
摘要:今天在壇子里有人提出了一個問題,問題是這樣的在以下指定表中中國遼寧山東沈陽大連濟南和平區(qū)沈河區(qū)現(xiàn)在給定一個號,想得到它完整的名字。遞歸往上找,直到為止。也就是最高層級時結(jié)束,求完整語句。 今天在壇子里有人提出了一個問題,問題是這樣的:在以下指定表中 id name fatherid1 中國 02 遼寧 13 山東 14 沈陽 25 大連 26 濟南 37 和平區(qū) 48 沈河區(qū) 4 現(xiàn)在...
摘要:拿到返回結(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...
摘要:拿到返回結(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...
閱讀 817·2021-10-13 09:39
閱讀 3697·2021-10-12 10:12
閱讀 1741·2021-08-13 15:07
閱讀 1006·2019-08-29 15:31
閱讀 2883·2019-08-26 13:25
閱讀 1776·2019-08-23 18:38
閱讀 1878·2019-08-23 18:25
閱讀 1857·2019-08-23 17:20