这里有很多类似的问题,但我认为没有人能充分回答这个问题.
我将从当前最受欢迎的question名继续,如果可以的话,用他们的例子.
本例中的任务是获取数据库中每个作者的最新帖子.
示例查询产生不可用的结果,因为它并不总是返回的最新帖子.
SELECT wp_posts.* FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
ORDER BY wp_posts.post_date DESC
目前公认的答案是
SELECT
wp_posts.*
FROM wp_posts
WHERE
wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date) <- ONLY THE LAST POST FOR EACH AUTHOR
ORDER BY wp_posts.post_date DESC
不幸的是,这个答案是简单明了的错误,在许多情况下,产生的结果不如原始查询稳定.
我的最佳解决方案是使用表单的子查询
SELECT wp_posts.* FROM
(
SELECT *
FROM wp_posts
ORDER BY wp_posts.post_date DESC
) AS wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
我的问题很简单:
Edit:这个问题是另一个问题的延续,我的具体情况略有不同.你可以(也应该)假设还有一个wp_帖子.id是该特定帖子的唯一标识符.