在MySQL中检索父子有序数据

时间:2015-03-27 16:40:23

标签: mysql hierarchy

我有一张表格,上面跟着字段

id, name, sub_id
1, test1, ""
2, test2, ""
3, test3, ""
4, test4, ""
5, test5, 1
6, test6, 1
7, test7, 2
8, test8, 3

我想从这个表中检索数据,这个数据的排序方式是按id排序,然后是sub_id(如果存在的话)。 例如:

id, name, sub_id
1, test1, ""
5, test5, 1
6, test6, 1
2, test2, ""
7, test7, 2
3, test3, ""
8, test8, 3
4, test4, ""

我尝试过按顺序排序,但是没有用。

2 个答案:

答案 0 :(得分:0)

我花了一段时间才明白,sub_id再次引用同一个表。 在那之后,我意识到你需要自己加入桌子。

尝试此查询

SELECT
  a.*
FROM
  `some_table` AS a
  LEFT JOIN `some_table` AS b
    ON
      b.id = a.sub_id
ORDER BY
  IF (b.id IS NULL, 0, a.sub_id) ASC,
  a.id ASC

答案 1 :(得分:0)

您的示例不显示按id然后sub_id排序,但如果您愿意,则会更容易:

SELECT * FROM some_table ORDER BY id,ifnull(sub_id,0);

我假设“”是一个空值,否则你需要一个与ifnull不同的函数。