Postgresql 如何在递归模式下为使用postgres的其他记录映射获取子类别ID?
如果我给category id是7,我希望输出为Postgresql 如何在递归模式下为使用postgres的其他记录映射获取子类别ID?,postgresql,recursive-query,Postgresql,Recursive Query,如果我给category id是7,我希望输出为 category_id | category_name | category_parent_id 3 | All | NULL 4 | Stationary | 3 5 | Food | 3 6 | Solid | 5 7 | Liquid | 5
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的所有子类别及其子类别。您可能需要查看:
您可能想看看:
你试过自己解决这个问题吗?学习SQL最好的方法是练习SQL欢迎来到SO。除了@TimBiegeleisen消息外:下次询问数据库相关问题时,请提供
create table
和insert
语句。在提出问题之前,最好先向我们展示你尝试过的东西,这样我们就可以看到你到底在哪里挣扎。第15项和第16项来自哪里?你是否尝试过自己解决这个问题?学习SQL最好的方法是练习SQL欢迎来到SO。除了@TimBiegeleisen消息外:下次询问数据库相关问题时,请提供create table
和insert
语句。在提出问题之前,向你展示你尝试过的东西总是合适的,这样我们就可以看到你到底在哪里挣扎。第15项和第16项来自哪里?
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
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)