在 MySQL 中查詢樹型表(即具有層級結(jié)構(gòu)的表)可以使用遞歸查詢或者使用嵌套集模型。下面分別介紹這兩種方法:
-
遞歸查詢:遞歸查詢是通過自連接來實現(xiàn)的,可以使用?
WITH RECURSIVE
?關(guān)鍵字進(jìn)行遞歸查詢。假設(shè)有一個?category
?表,其中包含?id
?和?parent_id
?字段表示節(jié)點的唯一標(biāo)識和父節(jié)點的標(biāo)識。以下是一個示例查詢樹型表的遞歸查詢語句:
WITH RECURSIVE cte AS (
SELECT id, parent_id, name
FROM category
WHERE id = 1 -- 根節(jié)點的ID
UNION ALL
SELECT c.id, c.parent_id, c.name
FROM category c
INNER JOIN cte ON cte.id = c.parent_id
)
SELECT * FROM cte;
上述示例中,初始查詢的是根節(jié)點的ID為1的記錄,并使用遞歸查詢將其子節(jié)點逐層查詢出來。
-
嵌套集模型:嵌套集模型是通過在表中添加?
left_value
?和?right_value
?字段來表示節(jié)點的層級關(guān)系。利用嵌套集模型,可以使用?BETWEEN
?運算符來查詢某個節(jié)點的子節(jié)點。以下是一個示例查詢樹型表的嵌套集模型查詢語句:
SELECT node.*
FROM category AS node, category AS parent
WHERE node.left_value BETWEEN parent.left_value AND parent.right_value
AND parent.id = 1 -- 根節(jié)點的ID
ORDER BY node.left_value;
上述示例中,通過將表自連接,并利用 BETWEEN
運算符來查詢指定節(jié)點的子節(jié)點。
當(dāng)層級固定時可以用表的自連接進(jìn)行查詢。如果想靈活查詢每個層級可以使用MySQL遞歸方法,使用with RECURSIVE實現(xiàn)。文章來源:http://www.zghlxwxcb.cn/news/detail-782564.html
根據(jù)實際情況,選擇適合你的數(shù)據(jù)結(jié)構(gòu)和查詢需求的方法進(jìn)行查詢樹型表。遞歸查詢適用于層級較深或者動態(tài)變化的樹型結(jié)構(gòu),而嵌套集模型適用于樹型結(jié)構(gòu)層級較淺且不經(jīng)常變化的情況。文章來源地址http://www.zghlxwxcb.cn/news/detail-782564.html
到了這里,關(guān)于如何查詢MySQL中的樹型表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!