在 MySQL 中,查詢樹的所有子節(jié)點(diǎn)是一項(xiàng)很常見的任務(wù)。下面我們來介紹一些方法來實(shí)現(xiàn)這個(gè)功能。
SELECT * FROM tree_table WHERE path LIKE 'parent_id,%' OR path LIKE '%,parent_id,%' OR path LIKE '%,parent_id'
上面的 SQL 查詢語句可以查詢一棵樹里某個(gè)節(jié)點(diǎn) id 的所有子節(jié)點(diǎn)。
SELECT * FROM tree_table WHERE path LIKE CONCAT('parent_id,%') OR path LIKE CONCAT('%,', parent_id, ',%') OR path LIKE CONCAT('%,', parent_id)
上面的 SQL 查詢語句也可以查詢一棵樹里某個(gè)節(jié)點(diǎn) id 的所有子節(jié)點(diǎn),并且通過 CONCAT 函數(shù)來拼接字符串,可以更加靈活地查詢。
WITH RECURSIVE cte AS ( SELECT id, parent_id, name, path FROM tree_table WHERE id = 1 UNION ALL SELECT tt.id, tt.parent_id, tt.name, tt.path FROM tree_table tt JOIN cte ON tt.parent_id = cte.id ) SELECT * FROM cte
上面的 SQL 查詢語句使用了 MySQL 的遞歸查詢,可以查詢一棵樹里某個(gè)節(jié)點(diǎn) id 的所有子節(jié)點(diǎn)。不過,這種方法需要在 MySQL 版本 8.0 及以上才能使用。
總之,在 MySQL 中查詢樹的所有子節(jié)點(diǎn),有多種方法可供選擇,可以根據(jù)實(shí)際情況選擇最合適的方法。