這裏是我的表SQL - 如何通過降序時間戳來查詢親子記錄
+------------+-----------+---------------+--------------+
| CommentId | ParentId | Timestamp | CommentText |
+------------+---------+-----------+--------------------+
| 1 | NULL | Jan 1 2:00pm | a |
| 2 | NULL | Jan 1 2:01pm | b |
| 3 | 1 | Jan 1 3:03pm | c |
| 4 | 2 | Jan 1 5:00pm | d |
| 5 | 2 | Jan 1 5:01pm | e |
| 6 | NULL | Jan 1 8:00pm | f |
| 7 | 1 | Jan 1 7:00pm | g |
| 8 | 6 | Jan 1 9:04pm | h |
| 9 | 1 | Jan 1 8:05pm | i |
| 10 | NULL | Jan 1 9:04pm | k |
+------------+-----------+---------------+--------------+
目前我使用下面的SQL返回母公司下令評論
SELECT c.*
FROM Comments c
ORDER BY COALESCE(c.ParentId, c.Id)
結果是這樣的:
+------------+-----------+---------------+--------------+
| CommentId | ParentId | Timestamp | CommentText |
+------------+---------+-----------+--------------------+
| 1 | NULL | Jan 1 2:00pm | a |
| 3 | 1 | Jan 1 3:03pm | c |
| 7 | 1 | Jan 1 7:00pm | g |
| 9 | 1 | Jan 1 8:05pm | i |
| 2 | NULL | Jan 1 2:01pm | b |
| 4 | 2 | Jan 1 5:00pm | d |
| 5 | 2 | Jan 1 5:01pm | e |
| 6 | NULL | Jan 1 8:00pm | f |
| 8 | 6 | Jan 1 9:04pm | h |
| 10 | NULL | Jan 1 9:04pm | k |
+------------+-----------+---------------+--------------+
我需要以降序時間戳順序得到結果。結果集應該是這樣的:
+------------+-----------+---------------+--------------+
| CommentId | ParentId | Timestamp | CommentText |
+------------+---------+-----------+--------------------+
| 10 | NULL | Jan 1 9:04pm | k |
| 6 | NULL | Jan 1 8:00pm | f |
| 8 | 6 | Jan 1 9:04pm | h |
| 2 | NULL | Jan 1 2:01pm | b |
| 5 | 2 | Jan 1 5:01pm | e |
| 4 | 2 | Jan 1 5:00pm | d |
| 1 | NULL | Jan 1 2:00pm | a |
| 9 | 1 | Jan 1 8:05pm | i |
| 7 | 1 | Jan 1 7:00pm | g |
| 3 | 1 | Jan 1 3:03pm | c |
+------------+-----------+---------------+--------------+
下不起作用:
SELECT c.*
FROM Comments c
ORDER BY COALESCE(c.ParentId, c.Id), Timestamp DESC
爲什麼你說它不起作用?我想你只是在你的訂單中缺少一個DESC – fthiella
是的,如果我添加沒有時間戳的DESC,它將大部分我想要的。它唯一不做的事情是以降序排列回覆(parentId!= NULL)。我意識到我沒有在我的問題中以降序排列答覆。我已經更新了它。 – Bob