0

我在这样的mysql数据库中有一个表:

Postings (id, content, user_id, create_date)

现在,对于十个用户(user_id),我想检索他的五个最新帖子(id)。一种简单的方法是在一个查询中计算出 10 个具有最新帖子的用户,然后触发 10 个单独的查询以获取每个用户的最新 5 个帖子。有没有更简单的方法把它放在一个或两个查询中?

4

2 回答 2

1

用这个

SELECT * FROM (SELECT * FROM TABLE ORDER BY ID DESC LIMIT 5) AS ttbl ORDER BY ID ASC;

这里括号内的代码以相反的顺序显示最新的 5 个帖子。这样数据首先存储在 ttbl 中,然后以适当的顺序再次排序以获得所需的结果。

希望它可以解决你

于 2013-01-27T13:56:08.217 回答
0

这是我想到的一种可能的解决方案(未经测试)。这会在单个列中返回每个用户的 ID。这不会是最快的查询。

这只是返回 id,而不是帖子本身。老实说,我认为您应该按照最初的想法进行多个查询。

Select 
(Select group_concat(id order by id desc)
From postings g
Where g.user_id=s.user_id
Limit 5) ids
From  (
Select user_id
From postings p
Group by user_id
Order by id desc
Limit 10) s

另外,请查看类似问题的答案: 如何选择每个类别的最新四个项目?

于 2013-01-27T12:58:16.100 回答