sql查询获取所有子类及其子类别等的类别

时间:2017-12-07 17:49:54

标签: mysql sql

我的类别表是

id          parent_id
----------   -----------
1           0
2           1
3           1
4           2
5           3
6           2
7           4
8           3
9           5
10          6
11          7
12          4
13          10
14          9

假设我想获得category_id 2的类别,那么输出应该像

一样
id 2,4,6,7,10,11,12,13

并且对于类别3 o / p应该是

id 3,5,8,9,14

和1应该是

id 1,2,3,4,5,6,7,8,9,10,11,12,13,14

和4应该是

id 4,7,11,12

请帮助获取此查询

2 个答案:

答案 0 :(得分:1)

也许它应该是那样的;

对于SQL Server

WITH PR AS 
(
    SELECT * , id AS parent
    FROM table c
    UNION ALL
    SELECT c.* , r.parent
    FROM table c
    INNER JOIN PR r ON c.parent_id = r.id
)
SELECT 
  r.parent AS parent_id
, r.id AS Childid 
FROM PR r
ORDER BY parent_id;

答案 1 :(得分:1)

经过大量搜索,我得到了这个解决方案,如果有人有更好的解决方案,那么它对我有用,请分享,你也可以在这个答案中评论以下查询的缺点

select id from (select * from categories order by parent_id, id) categories, (select @pv := '2') initialisation where find_in_set(parent_id, @pv) > 0 and @pv := concat(@pv, ',', id)