mysql查询所有父类和子类并父类计算子类之和
时间: 2024-09-20 09:14:33 浏览: 56
在MySQL中,如果你想要查询所有父类以及它们的所有子类,并对每个父类的子类之和进行计算,你需要使用递归查询(如果数据库支持的话),通常涉及到联接自身或者是使用WITH RECURSIVE子句。这里假设有一个简单的表结构,比如`Classes`表,其中包含`parent_id`表示父类ID:
```sql
CREATE TABLE Classes (
id INT PRIMARY KEY,
name VARCHAR(50),
parent_id INT,
-- 其他字段...
);
```
你可以编写这样的查询:
```sql
WITH RECURSIVE class_hierarchy AS (
SELECT
id,
name,
SUM(subtotal) OVER (PARTITION BY parent_id) as total_subclasses,
parent_id
FROM Classes
WHERE parent_id IS NULL -- 这里是父类
UNION ALL
SELECT
c.id,
c.name,
ch.total_subclasses + COALESCE(SUM(c.subtotal), 0),
c.parent_id
FROM Classes c
JOIN class_hierarchy ch ON c.parent_id = ch.id
)
SELECT * FROM class_hierarchy;
```
这个查询首先找出所有的父类(`parent_id IS NULL`),然后对于每一个父类,它会递归地将当前类的subtotal加上其子类的subtotal总和。
阅读全文