如何在MySQL中通过父子进行选择和排序

时间:2016-02-05 16:20:56

标签: mysql

我有一张看起来像这样的表

id  parent_id   name    address     email   telephone
2   NULL        name    address     email   phone
3   NULL        name2   address2    email2  phone2
4   NULL        name3   address3    email3  phone3
5   NULL        name4   address4    email4  phone4
6   NULL        name6               email6  phone6 
7   5           name7               email7  phone7 
8   NULL        name8               email8  phone8 

我想对它做一个SELECT,所以我选择了所有的行,但如果一行有父,它将显示在父行之后。所以在这种情况下,行看起来像这样

id  parent_id   name    address     email   telephone
2   NULL        name    address     email   phone
3   NULL        name2   address2    email2  phone2
4   NULL        name3   address3    email3  phone3
5   NULL        name4   address4    email4  phone4
7   5           name7               email7  phone7 
6   NULL        name6               email6  phone6 
8   NULL        name8               email8  phone8 

id = 7的行在id = 6的行之前,因为id = 7的那个的parent_id是5,所以它直接放在该行之后。

1 个答案:

答案 0 :(得分:0)

您可以在case子句中使用order by语句来执行此操作:

select * 
from yourtable
order by case when parentid is null then id else parentid end, parentid