1

我正在尝试构建一个非常简单的 CMS。为此,我创建了一个名为类别的表。顾名思义,它将是我在 CMS 中的文章的类别。

我的表与示例数据如下所示:
带有样本数据的表

如您所见,一个类别节点有一个父节点。现在,我如何编写一个查询来选择特定节点的所有父节点。例如,如果我选择节点Important,我该如何编写一个查询,它将返回以下节点:News、Users、General

我希望我足够清楚

4

1 回答 1

3

我不能说我真的很喜欢这种方法,但以下似乎在 MySQL 中有效:

select t.id, t.parent, @parent := parent
from (select @parent := 7) const join
     t
     on t.id = @parent;

你可以在这个SQL Fiddle中看到它。

我不相信这可以保证有效,但它似乎在实践中有效。如果您需要存储分层数据,您应该真正改变数据结构或切换到支持递归查询的数据库(例如 Postgres、SQL Server 和 Oracle)。

于 2013-08-05T01:30:28.757 回答