2016-08-03 76 views
4

比方说,我有一个表,看起来像这样:订购两列

enter image description here

正如你所看到的 - ID为6行与ID 3.排我想响应命令我的结果集,以便它出现在第3行和第7行之间。如何实现这一目标?做: select * from comments_comment order by updated_at, response_to_id让我完全看到你在图像上看到的东西。

+1

ORDER BY id_integer? –

+0

在这种特殊情况下,它会起作用,但如果有人会在3号回应中添加评论,但在评论号7后创建的话则不会。 –

+0

不是这样吗? 6是对id 3的响应,它是在id 7之后创建的 – ehh

回答

4
ORDER BY COALESCE(response_to_id, id), id 

您的订单背后的逻辑是,你想要父记录,和他们的孩子,出现组合在一起,与父母出现在该组的顶部。

上面ORDER BY在于它是通过在儿童,或在亲本其中response_to_id为空的情况下的实际id的情况下服用response_to_id标识组ID。然后在每个组内按id值排序。