postgresql - 如何在 PostgreSQL 中获得最顶层的父级

标签 postgresql

我有一个包含列的树结构表: 身份证, parent ,姓名。 给定一棵树 A->B->C, 怎么根据C的ID得到最顶层的父A的ID? 尤其是如何用“with recursive”来写SQL? 谢谢!

最佳答案

WITH    RECURSIVE q AS
        (
        SELECT  m
        FROM    mytable m
        WHERE   id = 'C'
        UNION ALL
        SELECT  m
        FROM    q
        JOIN    mytable m
        ON      m.id = q.parent
        )
SELECT  (m).*
FROM    q
WHERE   (m).parent IS NULL

关于postgresql - 如何在 PostgreSQL 中获得最顶层的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2855705/

相关文章:

django - 使用 Django 序列化程序的 PUT 请求

mysql - 将 Django 从 Postgres 迁移到 MySQL 时,我会遇到任何令人讨厌的冲击吗?

sql - 在没有网络授权的情况下使用 Google Cloud SQL

postgresql - 在 Windows 上设置 PostgreSQL ODBC

postgresql - 函数 PostgreSQL 9.5 中的排序结果

postgresql - 在 Docker Compose 中初始化 Postgres 数据库

postgresql - 在多对多查询中从帖子中排除标签

postgresql -\d 命令不再适用于 psql-client 8.3(升级到 v9.0)

sql-server - Postgresql存储过程返回select结果集

ruby-on-rails - Rails 模型缓存