mysql 根据子id查询父id集合
时间: 2023-07-06 08:06:31 浏览: 97
假设你有一个表 `categories` 包含以下字段:
| 字段名 | 类型 | 说明 |
| ------ | -------- | -------- |
| id | int | 分类ID |
| name | varchar | 分类名称 |
| parent | int/null | 父分类ID |
你可以使用下面的 SQL 查询语句来查询指定子分类的所有父分类ID集合:
```sql
WITH RECURSIVE category_path (id, path) AS (
SELECT id, CAST(id AS CHAR(200)) FROM categories WHERE id = {sub_category_id}
UNION ALL
SELECT c.id, CONCAT(cp.path, ',', c.id) FROM categories c
JOIN category_path cp ON c.id = cp.parent
)
SELECT path FROM category_path;
```
这个查询语句使用了 MySQL 的递归查询功能 (WITH RECURSIVE)。它会从指定的子分类开始,递归地查询其父分类,直到没有父分类为止。
查询结果会返回一个包含所有父分类ID的集合,格式为逗号分隔的字符串。你可以在应用程序中进一步处理这个字符串,将其转换为数组或其他更方便的数据结构。
注意:如果你的分类层级比较深,这个查询可能会消耗大量的数据库资源。因此,建议在应用程序中使用缓存来避免重复查询。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)