我有一条SQL语句,该语句按发布的时间顺序对注释进行排序,并且还对父注释进行子答复分组。
|- Comment 1 (Oldest)
|- Sub Comment (Sub Oldest)
|- Sub Comment
|- Sub Comment (Sub Newest)
|- Comment 2 (Newest)
查询在下面
SELECT
*
FROM feed_comments c
WHERE c.feed = 50
GROUP BY c.id
ORDER BY
IF(c.parent_id IS NULL, c.id, parent_id),
c.time ASC
我想修改查询以仍然以相同的方式对评论进行分组,但是我希望主评论是“最新到最旧”,并保留子回复“最旧到最新”
|- Comment 1 (Newest)
|- Sub Comment (Sub Oldest)
|- Sub Comment
|- Sub Comment (Sub Newest)
|- Comment 2 (Oldest)
我一直在处理IF和CASE语句的许多不同组合,但似乎找不到正确的解决方案!
答案 0 :(得分:1)
您的查询没有引用日期/时间列,因此我不得不猜测您如何表示“最新”。让我猜想这是指更大的ID。
您还可以使用coalesce()
简化表达式。
SELECT c.*
FROM feed_comments c
WHERE c.feed = 50
GROUP BY c.id
ORDER BY coalesce(c.parent_id, c.id) desc,
c.time ASC