在MySQL中查詢樹除去子級是一個常見的問題。通常,這可以通過使用遞歸查詢或者聯結查詢來實現。
下面是使用遞歸查詢實現查詢樹除去子級的示例代碼:
WITH RECURSIVE cte AS ( SELECT id, parent_id, name FROM category WHERE parent_id IS NULL UNION ALL SELECT c.id, c.parent_id, c.name FROM category c INNER JOIN cte ON c.parent_id = cte.id ) SELECT id, parent_id, name FROM cte WHERE id NOT IN ( SELECT DISTINCT parent_id FROM category WHERE parent_id IS NOT NULL ) ORDER BY id;
上述代碼通過遞歸查詢獲取所有根節點和它們的子節點,并在最后的篩選中排除了所有子節點。
下面是使用聯結查詢實現查詢樹除去子級的示例代碼:
SELECT t1.id, t1.parent_id, t1.name FROM category t1 LEFT JOIN category t2 ON t1.id = t2.parent_id WHERE t2.parent_id IS NULL ORDER BY t1.id;
上述代碼通過聯結查詢獲取所有根節點,然后通過WHERE子句排除了所有子節點,并按照id排序。
以上是兩種在MySQL中查詢樹除去子級的方法,可以根據實際情況選擇合適的方法進行使用。