这里有一张简单的桌子:
id, title, parent, ordering
---------------------------
3242, TitleB, 0, 1
6574, TitleBA, 3242, 1
2346, TitleBB, 3242, 2
2344, TitleA, 0, 1
7346, TitleAC, 2344, 3
3574, TitleAB, 2344, 2
2256, TitleAA, 2344, 1
1435, TitleC, 0, 1
4354, TitleCA, 1435, 1
TitleA
TitleAA
TitleAB
TitleAC
TitleB
TitleBA
TitleBB
TitleC
TitleCA
因此,行应该按第一个父项排序,然后按其子项排序。然后是下一个父项,然后是它的子项,依此类推。
父母自己的命令无关紧要!标题只是为了更好地理解,不能用于排序。重要的是,孩子们在父母的领导下得到分类。
这是我做的最后一个查询:
SELECT *
FROM table t1
LEFT JOIN table t2
ON t2.id = t1.parent
ORDER BY COALESCE(t1.ordering, t2.ordering), t2.ordering