按同一表ID分组

时间:2019-08-24 20:49:40

标签: mysql sql group-by

我有一个如下的注释表

id     comment_id  date
 2        Null        ...
 3         2          ...
 4         2          ...
 5        Null        ...
 6         5          ...
 7         Null       ...
 8         2          ...
 9         5          ...

我想进行查询,可能是一个分组依据,以便输出如下所示

id     comment_id  date
 2        Null        ...
 3         2          ...
 4         2          ...
 8         2          ...
 5        Null        ...
 6         5          ...
 9         5          ...
 7         Null       ...

comment_id基本上是指“ id”列。这就是对评论的答复。现在我想获取例如comment2的评论并回复comment2,即comment3,comment4和comment8分组在一起,它们应该按日期排序。 同样,comment5和对它的答复是comment6,comment9组合在一起,依此类推。 什么是查询?

1 个答案:

答案 0 :(得分:3)

我认为这可以满足您的要求

select c.*
from comments c
order by coalesce(comment_id, id),
         (case when comment_id is null then 1 else 2 end),
         id;

按键执行以下操作:

  • 将所有评论与其ID相关联。
  • 首先发表主要评论。
  • 按ID排序其余部分。