在同一个 table 中排序 child / parent

sort child / parent in same table

我有一个 MySQL table 如下:

member_id | name        | parent     |....
   1      | john        | 0          |
   2      | alex        | 0          |
   3      | nikita      | 1          |
   4      | sarah       | 1          |
   .
   .
   .

我想用 parrent 排序。 我尝试了这个但没有用:

SELECT * FROM `members` ORDER BY COALESCE(`parrent`,`member_id`),`parrent` !=0,`member_id`

所有 child 已排序,但 parent 未排序。

我想要这个结果:

member_id | name        | parent     |....
   2      | alex        | 0          |
   1      | john        | 0          |
   3      | nikita      | 1          |
   4      | sarah       | 1          |
   .
   .
   .

parents 然后 childs.

是否有更好的解决方案来实现此 table? 我需要一个包含家庭

的 table

coalesce() 不起作用,因为父项是 0。您可以使用 nullif() 代替:

ORDER BY COALESCE(NULLIF(parent, 0), member_id),
        (parent = 0) DESC,
        member_id

请注意,我使用 (parent = 0) DESC 作为第二个键。我更喜欢先表达我们想要的 匹配项 的逻辑,DESC 将真值放在假值之前。