色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql樹的sql怎么查

什么是MySQL樹

MySQL 樹是指通過一定的數(shù)據(jù)結(jié)構(gòu)和算法,將數(shù)據(jù)以層級(jí)的形式存儲(chǔ),可以方便地對(duì)具有層級(jí)關(guān)系的數(shù)據(jù)進(jìn)行查詢和修改。常見的實(shí)現(xiàn)方法有閉包表(Closure Table)和嵌套集合(Nested Set)兩種方式。

如何查詢某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)

查詢某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn),我們可以使用嵌套集合的方式,通過比對(duì)左右值的大小關(guān)系來進(jìn)行篩選。假設(shè)我們要查詢節(jié)點(diǎn) A 的所有子節(jié)點(diǎn),可以使用如下 SQL 語句:

SELECT * 
FROM tree_table 
WHERE lft >(SELECT lft FROM tree_table WHERE name='A') 
AND rgt< (SELECT rgt FROM tree_table WHERE name='A');

如何查詢某個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)

查詢某個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn),我們可以通過閉包表的方式,查詢出該節(jié)點(diǎn)的所有祖先節(jié)點(diǎn),并篩選出離該節(jié)點(diǎn)最近的一個(gè)。假設(shè)我們要查詢節(jié)點(diǎn) B 的父節(jié)點(diǎn),可以使用如下 SQL 語句:

SELECT * 
FROM tree_table 
WHERE id = (SELECT ancestor 
FROM closure_table 
WHERE descendant = (SELECT id FROM tree_table WHERE name='B') 
AND depth = 1);

如何查詢某個(gè)節(jié)點(diǎn)的所有祖先節(jié)點(diǎn)

查詢某個(gè)節(jié)點(diǎn)的所有祖先節(jié)點(diǎn),我們可以使用閉包表的方式,查詢?cè)摴?jié)點(diǎn)的所有祖先節(jié)點(diǎn)。假設(shè)我們要查詢節(jié)點(diǎn) C 的所有祖先節(jié)點(diǎn),可以使用如下 SQL 語句:

SELECT * 
FROM tree_table 
WHERE id IN (SELECT ancestor 
FROM closure_table 
WHERE descendant = (SELECT id FROM tree_table WHERE name='C') 
AND depth >0);

如何查詢某個(gè)節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)

查詢某個(gè)節(jié)點(diǎn)的所有子孫節(jié)點(diǎn),我們可以使用嵌套集合的方式,查詢?cè)摴?jié)點(diǎn)的所有后代節(jié)點(diǎn)。假設(shè)我們要查詢節(jié)點(diǎn) D 的所有子孫節(jié)點(diǎn),可以使用如下 SQL 語句:

SELECT * 
FROM tree_table 
WHERE lft >= (SELECT lft FROM tree_table WHERE name='D') 
AND rgt<= (SELECT rgt FROM tree_table WHERE name='D');