我有一张像这样的桌子:
+------+---------+- | id | parent | +------+---------+ | 2043 | NULL | | 2044 | 2043 | | 2045 | 2043 | | 2049 | 2043 | | 2047 | NULL | | 2048 | 2047 | | 2043 | 2047 | +------+---------+
该图显示了一个简单的两级“父母-孩子” -corelation。我如何通过SELECT语句进行排序来获得如上列表中所示的顺序,这意味着:第一亲,第二亲,第二亲,第二亲等等(如果我有的话,我可以添加为孩子们订购订单…我希望)。添加排序字段是否可能?
包括按ID对子级进行排序:
ORDER BY COALESCE(parent, id), parent IS NOT NULL, id
SQL Fiddle示例
解释:
COALESCE(parent, id)
parent IS NOT NULL
id
parent