我将数据链表存储在如下记录中:
CREATE TABLE IF NOT EXISTS `data_nodes` (
`record_id` int(11) NOT NULL,
`prev_node` int(11) NOT NULL,
`data` varchar(200) NOT NULL,
PRIMARY KEY (`record_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
其中 prev_node 是列表中前一项的 record_id,如果我们位于列表中的第一项,则为 0。
典型的列表可能类似于:
record_id prev_node data
--------- --------- ----
1 0 first item
12 1 second item
27 12 third item
我正在使用 Ruby 的 mysql 模块,我想做的是:给定列表中最后一项的记录号,在单个查询中加载整个列表。 (例如,给定记录 id 27,返回包含“第一项”、“第二项”、“第三项”的结果集)
这可以做到吗?
谢谢。
最佳答案
任何固定高度N的树都可以,但是如果树高变成N+1,你就不能做这个操作。
换句话说,如果您知道有多少层父/子节点,您可以按照此处的说明构建查询(搜索Retrieving a Single Path
):http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
您可以使用嵌套集模型和 RoR 插件 acts_as_nested_set 来获得您想要的结果。
如果您需要这篇文章的帮助,请告知。
关于mysql - 在单个 Ruby/MySQL 查询中加载整个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142803/