如何使用 postgres 以递归模式获取其他记录映射的子类别 ID?

How to get subcategoriy ids in recursive mode for other record maping using postgres?

category_id | category_name | category_parent_id
3           | All           |   NULL
4           | Stationary    |    3
5           | Food          |    3
6           | Solid         |    5
7           | Liquid        |    5
8           | Soft Drinks   |    7
9           | Pepsi         |    8
10          | 7up           |    8
11          | Hot Item      |    7
12          | Tea           |   11
14          | Samusa        |    6

如果我给的类别 id 是 7,我希望输出为

category_id | category_name | category_parent_id
7           | Liquid        |    5
8           | Soft Drinks   |    7
11          | Hot Item      |    7
9           | Pepsi         |    8
10          | 7up           |    8
12          | Tea           |   11
15          | Can(100Ml)    |   10
16          | Can(250ML)    |   10

我们需要以递归方式列出类别id 7及其子类别的所有子类别。

你可能想看看 CTE:

WITH RECURSIVE 
  mapping(category_parent_id,category_id,category_name) AS (
   SELECT category_parent_id,category_id,category_name FROM t
   UNION 
   SELECT mapping.category_parent_id, t.category_id, t.category_name FROM mapping, t
     WHERE mapping.category_id = t.category_parent_id
) SELECT category_id, category_name FROM mapping WHERE category_parent_id = 7;

 category_id | category_name 
-------------+---------------
           8 | Soft Drinks
          11 | Hot Item
          10 | 7up
           9 | Pepsi
          12 | Tea
(5 Zeilen)