SQL:根据3父ID进行排序

时间:2014-05-22 02:18:56

标签: mysql sql sorting

如何对此表进行排序? 它取决于父grp1到父grp3来排序

这里是我的表格样本:

   Group Code - Group Desc - Level - Parent Grp1 - Parent Grp2 - Parent Grp3
   03       OFFICE SUPPLIES  1        null           null          null
   02       TOOLS            1        null           null          null  
   0000002  0000002          3         02            0201          null
   0201     HARDWARE         2         02            null          null     
   0301     PEN AND PENCIL   2         03            null          null         
   0000001  0000002          3         03            0301          null         

我的例子是我的愿望输出:

   Group Code - Group Desc - Level - Parent Grp1 - Parent Grp2 - Parent Grp3
   02       TOOLS            1        null           null          null
   0201     HARDWARE         2         02            null          null
   0000002  0000002          3         02            0201          null
   03       OFFICE SUPPLIES  1        null           null          null
   0301     PEN AND PENCIL   2         03            null          null
   0000001  0000001          3         03            0301          null

任何人都可以帮我抽样查询我的欲望输出吗?

1 个答案:

答案 0 :(得分:4)

您可以通过以下方式获得您想要的样本数据:

order by coalesce(ParentGrp1, GroupCode), level

编辑:

在添加更多数据时,您可以对此进行扩展:

select *
from table1
order by coalesce(ParentGrp1, GroupCode),
         coalesce(ParentGrp2, GroupCode),
         level;

可能有点复杂:

select *
from table1
order by coalesce(ParentGrp1, GroupCode),
         (case when level > 1 then coalesce(ParentGrp2, GroupCode) end),
         (case when level > 2 then coalesce(ParentGrp3, GroupCode) end),
         level;