按两列排序

时间:2016-08-03 05:12:56

标签: sql postgresql

我们假设我有一张如下表:

Why call base.OnStop() when Windows Service is stopped?

正如您所看到的那样 - 具有ID为6的行是对ID为3的行的响应。我想订购我的结果集,以便它出现在第3行和第7行之间。如何实现?这样做: select * from comments_comment order by updated_at, response_to_id让我得到你在图片上可以看到的内容。

1 个答案:

答案 0 :(得分:4)

ORDER BY COALESCE(response_to_id, id), id

您的订购背后的逻辑是,您希望父记录及其子项显示为组合在一起,父组显示在组的顶部。

以上ORDER BY就是它通过在儿童的情况下采用response_to_id来识别组ID,或者在父母的情况下采用id response_to_id 1}}为空。然后在每个组中按id值排序。