mysql 同表多级关联查询
时间: 2024-10-13 08:00:45 浏览: 33
MySQL 联合查询案例代码
在MySQL中,如果你需要对同一张表进行多级关联查询,通常是涉及到具有父子关系的数据结构,比如部门和员工之间的关系。假设有一个`departments`表(存储部门信息)和一个`employees`表(存储员工信息),它们之间通过`parent_id`关联,可以这样做:
首先,部门表可能有`id`, `name`(部门名)和`parent_id`(上级部门ID,对于根部部门为NULL)字段;员工表可能有`id`, `name`, `department_id`(所属部门ID)等字段。
查询所有员工及其直接和间接的上级部门信息,你可以使用递归查询或者自连接(JOIN)结合子查询:
```sql
WITH RECURSIVE department_tree AS (
SELECT d.id, d.name as dept_name, NULL as parent_dept_name
FROM departments d
WHERE d.parent_id IS NULL
UNION ALL
SELECT d.id, d.name, dt.dept_name
FROM departments d
JOIN department_tree dt ON d.parent_id = dt.id
)
SELECT e.id, e.name, e.department_id, dt.dept_name, dt.parent_dept_name
FROM employees e
JOIN department_tree dt ON e.department_id = dt.id;
```
上述查询创建了一个名为`department_tree`的递归公共表表达式(Recursive Common Table Expression, RCTE),从根部门开始一层层向上获取数据,然后将其与`employees`表联接。
阅读全文