从MYSQL数据库中选择子记录的有效方法

时间:2017-08-09 20:19:46

标签: mysql sql group-by sql-order-by

我有一个mysql数据库。 我在这个数据库中创建了一个包含帖子的表。

该表格包含以下列:

p_id (primary key), post_header, creation_date, post_body, r_id, u_id

所以每条记录代表一个帖子。

r_id引用p_id,当它不为空时,表示它是对p_id(或帖子ID)的回复。

我的问题是,我想要一个查询来抓取所有帖子,并将所有帖子的所有回复分组到下面。

示例结果集:

Result Set

所以基本上我正在寻找一个可以通过创建日期desc命令我的全局帖子的查询,并且还按照创建日期desc按顺序嵌套下面的回复。

我尝试使用这样的功能组:

SELECT * FROM global_post group by r_id order by creation_date desc;

但它不起作用。是否有一种可以将记录组合​​在一起的机制?

我不希望每个帖子都有子查询

2 个答案:

答案 0 :(得分:0)

您可以按照

部分的顺序尝试一下
resultsTwo.size()

答案 1 :(得分:0)

GROUP BY用于聚合数据,这不是您想要的。

尝试按coalesce(r_id, p_id)排序,这将为全球帖子提供与其子女相同的顺序。然后添加第二个排序,将global_post放在top语句中。

select * from global_post 
order by coalesce(r_id, p_id) desc, 
case when r_id is null then 0 else 1 end, creation_date desc