2012-01-20 58 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條款,因爲它似乎要返回每個用戶只有一個職位。