我的类别表是
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
请帮助获取此查询
答案 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)