SQL CTE 计算子递归

标签 sql hierarchical-data common-table-expression

我想(使用 cte)以这种方式计算表中的 child 数量,以在 parent 级别所有 child 的数量包括他们的 child 。有 sample 吗?

最佳答案

CREATE TABLE t_parent (id INT NOT NULL PRIMARY KEY, parentID INT NOT NULL)

INSERT
INTO    t_parent
VALUES  (1, 0)
INSERT
INTO    t_parent
VALUES  (2, 1)
INSERT
INTO    t_parent
VALUES  (3, 1)
INSERT
INTO    t_parent
VALUES  (4, 2)
INSERT
INTO    t_parent
VALUES  (5, 1)
INSERT
INTO    t_parent
VALUES  (6, 5)
INSERT
INTO    t_parent
VALUES  (7, 5);

WITH    q AS
        (
        SELECT  id, parentId
        FROM    t_parent
        UNION ALL
        SELECT  p.id, p.parentID
        FROM    q
        JOIN    t_parent p
        ON      p.id = q.parentID
        )
SELECT  id, COUNT(*)
FROM    q
GROUP BY
        id

关于SQL CTE 计算子递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191847/

相关文章:

php - codeigniter 事件记录查询缺少撇号

postgresql - 是否缓存了 PostgreSQL 子查询/CTE?

mysql - 如何获取MYSQL分层数据中的所有子记录

Sql For Xml Path 获取节点数

sql-server - CTE SQL查询中的多个递归联合所有选择

MySQL列扁平化为字符串

sql - 在 SQL Azure 中使用临时表

sql - Postgresql 不同计数提高性能

arrays - 数组自下而上获取所有 child 的总和

mysql - 在 mysql < 8 中获取树文件夹结构的父项和子项并且没有 CTE