【发布时间】:2020-12-08 16:26:44
【问题描述】:
我有一张这样的桌子:
- 身份证
- 姓名
- parent_id
然后我想根据它们的 id 选择某些行,所以像这样:
SELECT *
FROM TABLE
WHERE id IN ('1', '5', '8', '9', '35')
我想从这个查询中也显示父/子关系,例如:
id parent
-----------
1 0
5 1
8 0
9 8
35 9
所以最终的输出应该是这样的:
1
--5
8
--9
----35
我是在mysql之外做这个吗,我试过用数组,但不知道,或者
我是在MYSQL里面做的吗,我也不知道怎么做。
【问题讨论】:
-
MySQL 缺乏分层查询支持(其他数据库——Oracle、SQL Server、PostgreSQL...),他们承认他们的文档中存在缺陷:dev.mysql.com/tech-resources/articles/hierarchical-data.html
-
问题不在于 MySQL 本身,而在于 SQL 原本不支持递归查询。但是,还有其他树表示(嵌套集、路径)本身支持分层视图。
-
@KingCrunch:Oracle 从 v2 开始支持分层查询,使用其
CONNECT BY语法。这是 ANSI-99,我相信标准化的递归查询(使用递归 WITH),尽管供应商并未实施整个 ANSI 标准......
标签: php mysql sql hierarchical-data