2012-01-20 50 views
0

我有以下查询:PHP和MySQL - 选择statment没有返回正确的顺序

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。我想用最新的日期记录是一个传递过来的记录。

如何获得它返回最新的独特的帖子吗?

回答

1

你没有选择的职位,你是从表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条款,因为它似乎要返回每个用户只有一个职位。