我有以下查询:
SELECT DISTINCT user.user_id
FROM (post INNER JOIN user ON user.user_id = post.user_id)
WHERE post.red_flag = 0 AND post.approved = 1
AND user.official = 1
AND post.activity_date >= '2012-01-13'
ORDER BY post.activity_date DESC LIMIT 6
我正试图在过去30天内从官方用户那里获得最新的帖子。
问题似乎在于,查询正在查找user_id的第一个不同值,并使用附加到该行的日期。它不按特定顺序遍历表,找到user_id 15并将其标记为唯一。然后,传递user_id为15的每一个其他记录。我想要的最新日期的唱片是一张过期的。
如何返回最新的不同帖子?
您不是在选择posts,而是在表user
中选择user_id。
在不知道你的表格结构的情况下,我猜你需要这样的东西:
SELECT post.id FROM post LEFT JOIN user
ON user.user_id = post.user_id
WHERE post.red_flag = 0
AND post.approved = 1
AND user.official = 1
AND post.activity_date >= '2012-01-13'
GROUP BY post.user_id
ORDER BY post.activity_date DESC
LIMIT 6
我添加了一个GROUP BY
子句,因为您似乎希望每个用户只返回一个帖子。