mysql - 选择引用同一表中其他元素的元素

标签 mysql sql

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

我的表看起来像下面的示例数据:
table with sample data

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

我希望我说得足够清楚

最佳答案

我不能说我真的很喜欢这种方法,但以下方法似乎适用于 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)。

关于mysql - 选择引用同一表中其他元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18049292/

相关文章:

MySQL 仅当子表中的记录与另一个子表中的记录匹配时才从父表中选择行

mysql - SELECT 与另一个表连接的特定行

尝试更新 mysql 条目 LEMP 时 PHP 无响应

php - 将数据从php中的CSV文件插入mysql

php - 如何以简单的形式禁用 SQL 注入(inject)的可能性?

python - 在 mysql 查询中使用 if

php - 如果条件为真但不是在每一行都为真,如何插入或更新?

sql - 在 SQL 中创建查询

更新列的 SQL 语句

SQL 运行总计按限制分组