【发布时间】:2019-03-13 18:15:50
【问题描述】:
专家您好,我有一个包含 nodeid 和 parentid 列的节点表,我试图以这样一种方式获取所有节点的列表,即父节点列在子节点之前。
在这个 sqlfiddle 示例中,我没有得到节点 id 20,21 作为结果
我使用的查询是
select nodeid,parentid from
(select * from node
order by parentid, nodeid) channel_sorted,
(select @pv := '0') initialisation
where find_in_set(parentid, @pv) and length(@pv := concat(@pv, ',', nodeid))
【问题讨论】:
-
你能提供你预期的输出吗?
-
旁注:当涉及到分层存储时,父行总是在子行之前。意思是,
parent_id不存在就无法存在。就您而言,您是如何得到(19, 'categor19', 2296)的?由于设计不佳,您正面临这个问题。你仍然可以通过shown here 使用 PHP 来实现这一点。 -
1 0 4 1 5 1 2296 4 19 2296 20 19 21 19
-
是的@vivek_23,是的,数据就是这样,我需要在子节点之前创建父节点,但是查询没有按照我期望的顺序返回。 mysql没有办法解决这个问题吗?
标签: mysql