查询:查找来自不同用户的最近5篇帖子

时间:2012-08-28 19:05:50

标签: sql postgresql

假设我们有users表,用户可以有多个postspostsuser_id列。

我想检索前5个用户的帖子,但每个用户只有一个帖子。所以,最后我想要有5个帖子,每个帖子属于不同的用户。我怎么能在SQL中做到这一点?

3 个答案:

答案 0 :(得分:1)

你应该有两张桌子

Table : users ; Columns : users_id , user_name
Table2: posts ; Columns : post_id , post_description , users_id

现在要为每个

检索一个帖子的所有用户
SELECT * FROM users as u
LEFT JOIN (SELECT * FROM posts LIMIT 1)  as p on p.users_id = u.users_id
LIMIT 5 ORDER BY ASC

如果您想为每个用户获取最早的帖子

SELECT * FROM users as u
LEFT JOIN (
    SELECT 
        MIN(post_id) as post_id , 
        post_description , 
        users_id  FROM posts
    )  as p on p.users_id = u.users_id
LIMIT 5 ORDER BY ASC

对于最新的帖子使用MAX(post_id)而不是MIN(post_id)

答案 1 :(得分:0)

也许它会对你有所帮助:

select * 
  from users u
  join posts p on p.idUser = u.id
               and p.id = ( select max(id) from posts where p.id=u.id ) 
 ORDER BY i.id LIMIT 5

答案 2 :(得分:0)

这将为您提供最新的五个帖子(假设更高的ID帖子是“更新”),强制每个结果来自不同的用户。

SELECT p.user_id, MAX(p.post_id) AS post_id 
FROM posts AS p
GROUP BY p.user_id -- get unique users
ORDER BY p.post_id DESC -- sort results by post_id number, descending
LIMIT 5

使用此方法,如果您需要加载其他用户或发布数据,最好在获得所需的用户ID和post id后单独加载它。