【发布时间】:2019-05-16 01:03:41
【问题描述】:
我对 SQL 很陌生,并且有一个相当基本的问题。假设我正在处理以下表结构:
CREATE TABLE nodes (
id INTEGER NOT NULL PRIMARY KEY,
parent INTEGER REFERENCES nodes(id)
);
如果我们持有一个不变量,即节点的父节点不能等同于它的任何子节点,那么根据定义,我们的图中不会有任何循环。现在我们得到了一个不相交的有向无环图。
我的两个问题是:
- 如果我们无法更改数据库的结构:我必须编写什么
select语句才能有效地获取数据库中的所有叶子? IE。没有任何孩子的 id。 - 如果我们可以更改表的结构:我们可以更改或添加什么来使
select语句更高效?
具有五个节点的图的输出示例,其父节点 3->2、2->1 和 5->4 将输出 3 和 5,因为它们是唯一没有子节点的节点。
【问题讨论】:
-
你用的是什么版本的 MySQL?
-
假设 8.0 没问题
-
这读起来很像家庭作业。
标签: sql graph-theory mysql-8.0