按子和名称选择语句顺序

时间:2017-10-10 19:29:26

标签: mysql sql database

这是我需要的结果

what i have

这是我的结果

enter image description here

这是我的查询

select a.id, a.name, a.parent 
from categ a left join categ b on a.parent=b.id 
order by coalesce(b.name, a.name), a.name

这是我的数据库http://sqlfiddle.com/#!9/f059f4

1 个答案:

答案 0 :(得分:2)

看起来你正试图排序:

  1. 父名称
  2. 子名称
  3. 并且您希望父母在孩子们之上排序。

    因此,您需要在ORDER BY子句中添加第三列,以便区分孩子和父母。

    这适用于您的具体情况:

    select a.id, a.name, a.parent 
    from categ a left join categ b on a.parent=b.id 
    order by coalesce(b.name, a.name), (b.id is not null), a.name