MySQL-按不同条件对帖子/评论进行排序和分组

时间:2018-09-20 21:33:07

标签: php mysql sql

我有一条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语句的许多不同组合,但似乎找不到正确的解决方案!

1 个答案:

答案 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