2016-08-03 114 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值排序。