PHP和MySQL - 选择语句不返回正确的顺序

时间:2012-01-20 23:09:32

标签: php mysql select join distinct

我有以下查询:

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 个答案:

答案 0 :(得分: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子句,因为您似乎只想为每个用户返回一个帖子。