我在mysql数据库中有一个表,如下所示:
Postings (id, content, user_id, create_date)
现在,对于十个用户(user_id),我想要检索他的五个最新帖子(id)。 一个简单的方法是在一个查询中计算10个用户的最新帖子,然后触发10个单独的查询以获取每个用户的最新5个帖子。 将它放在一两个查询中是否有更简单的方法?
答案 0 :(得分:1)
使用此
SELECT * FROM (SELECT * FROM TABLE ORDER BY ID DESC LIMIT 5) AS ttbl ORDER BY ID ASC;
此处括号内的代码以相反的顺序显示最新的5个帖子。这样数据首先存储在ttbl中,然后按适当的顺序再次排序,以获得所需的结果。
希望它可以解决你
答案 1 :(得分: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
另外,请查看类似问题的答案: How to SELECT the newest four items per category?