MYSQL查询数据并组合,分组和订购结果

时间:2013-03-26 11:30:41

标签: mysql sorting

我无法使查询有效工作,只查询1个表。以下是表格数据的示例:

ID    NAME     PARENT_ID    SORT_ORDER
1     Home     NULL         1
2     Contact  NULL         3
3     Service  NULL         2
4     Service1 3            0
5     Service3 3            2
6     Service2 3            1

我想要做的是返回此表中的数据,其结果是PARENT_ID出现在带有该ID的结果下,并且所有结果都显示在他们的SORT_ORDER中。以下是我希望查询得出上述数据的方法:

ID   NAME     PARENT_ID    SORT_ORDER
1    Home     NULL         1
3    Service  NULL         2
4    Service1 3            0
6    Service2 3            1
5    Service3 3            2
2    Contact  Null         3

非常欢迎任何反馈,以实现这一目标。

亲切的问候,

1 个答案:

答案 0 :(得分:0)

如果我理解你的逻辑,你可以使用它:

SELECT
  t1.*
FROM
  yourtable t1 LEFT JOIN yourtable t2
  ON t1.PARENT_ID = t2.ID
ORDER BY
  COALESCE(t2.SORT_ORDER, t1.SORT_ORDER),
  t1.PARENT_ID IS NOT NULL,
  SORT_ORDER

请参阅小提琴here