我有以下数据:
id, parent_id
1, 3
2, null
3, 2
4, 2
其中parent\u id是对同一表的引用。
我需要对这些列进行排序,以便每个记录都在其父记录之后(不一定紧跟其后)。
所以我期望这个结果:
id, parent_id
2, null
3, 2
1, 3
4, 2
我猜在没有任何显著模式更改的情况下,没有一种干净高效的方法可以做到这一点,但万一有人能想到一种方法,我在这里问这个问题。
一种可能的方法是执行多个查询,其中每次父项id必须出现在前面的查询结果之一中。但这不是很有效。
2条答案
按热度按时间8dtrkrch1#
您将需要递归来完成此任务:
dddzy1tm2#
我认为最安全的方法是使用递归的cte来计算每个路径
id
. 那就分类:这是一把小提琴。