Mysql 对同一表中的子级/父级进行排序
我有一个MySQL表,如下所示:Mysql 对同一表中的子级/父级进行排序,mysql,sql,parent-child,coalesce,Mysql,Sql,Parent Child,Coalesce,我有一个MySQL表,如下所示: member_id | name | parent |.... 1 | john | 0 | 2 | alex | 0 | 3 | nikita | 1 | 4 | sarah | 1 | . . . 我想使用parrent进行排序。 我
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`
所有子级已排序,但父级未排序
我想要这个结果:
member_id | name | parent |....
2 | alex | 0 |
1 | john | 0 |
3 | nikita | 1 |
4 | sarah | 1 |
.
.
.
先是父母,然后是孩子
是否有更好的解决方案来实现此表?
我需要一个包含族的表coalesce()
不起作用,因为父项是0
。您可以改用nullif()
:
ORDER BY COALESCE(NULLIF(parent, 0), member_id),
(parent = 0) DESC,
member_id
请注意,我对第二个键使用了
(parent=0)DESC
。我喜欢先用逻辑来表示我们想要的匹配,用DESC
将真值放在假值之前。您有两个不同的引用。它应该是parent
还是parrent
?你能展示你想要的结果吗?我在你的样本数据中没有看到空值,coalesce()是怎么来的?我在帖子中解释了我想要的结果。我通常需要一张包括families@FarzadKamali . . . 我明白了<代码>最大()。您需要NULLIF()
或CASE
表达式。