我有一张桌子:
我可以使用单个查询对其进行组织以显示:
谢谢。
答案 0 :(得分:1)
是的,你可以做这个混蛋:
ORDER BY CASE parentid WHEN 0 THEN id ELSE parentid END ASC, id ASC
我说这是一种混蛋,因为它需要对每一行进行计算。它不会是高效的。解决此问题的更好方法是使用更好的数据模型。您也可以使用Nested Set Model进行存储,而不是仅存储父ID。所以基本上你的数据模型看起来像:
id | parentid | name | left | right
1 | 0 | Peter | 1 | 4
2 | 0 | Marcus | 5 | 8
3 | 1 | Monica | 2 | 3
4 | 2 | Sergei | 6 | 7
现在,通过它,您的订单将减少到:
ORDER BY `left` ASC
哪个会做同样的事情。给嵌套的集文章一个读。如果您需要过滤或排序数据,有更好的方法来解决问题,而不仅仅是parentid ...