db2 如何递归查询所有子集
时间: 2023-06-29 15:09:28 浏览: 162
在 DB2 中,你可以使用通用表达式(Common Table Expression)来递归查询所有子集。下面是一个例子:
假设你有一个名为 `category` 的表,它有两个字段 `id` 和 `parent_id` 分别表示分类的 ID 和父级分类的 ID。如果一个分类没有父级分类,则其 `parent_id` 字段为 NULL。
现在,如果你想查询 ID 为 1 的分类的所有子集,可以使用以下 SQL:
```
WITH RECURSIVE subcategories AS (
SELECT id, parent_id
FROM category
WHERE id = 1
UNION ALL
SELECT c.id, c.parent_id
FROM category c
JOIN subcategories s ON s.id = c.parent_id
)
SELECT * FROM subcategories;
```
这个查询首先选择 ID 为 1 的分类记录,并将其作为起点。然后,使用递归查询选择所有子分类。递归查询的基本思想是将查询的结果与原始表连接,直到没有更多的子集为止。在这个例子中,第二个 `SELECT` 语句连接了 `category` 表和 `subcategories` 表本身,这样就可以递归地查询所有子分类。
最后,使用 `SELECT` 语句选择所有子分类的记录并返回。
阅读全文