MySQL按组前排序这里有很多类似的问题,但我认为没有人能充分回答这个问题。我将继续从当前最受欢迎的问题如果可以的话,就用他们的例子。此实例中的任务是获取数据库中每个作者的最新帖子。示例查询产生不可用的结果,因为它并不总是返回的最新帖子。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_postsWHERE
wp_posts.post_status='publish'
AND wp_posts.post_type='post'GROUP BY wp_posts.post_authorHAVING wp_posts.post_date = MAX(wp_posts.post_date) <- ONLY THE LAST POST FOR EACH AUTHORORDER BY wp_posts.post_date DESC不幸的是,这个答案显然是错误的,而且在许多情况下产生的结果不如原始查询那么稳定。我最好的解决方案是使用表单的子查询SELECT wp_posts.* FROM (
SELECT *
FROM wp_posts ORDER BY wp_posts.post_date DESC) AS wp_postsWHERE wp_posts.post_status='publish'AND wp_posts.post_type='post'GROUP BY wp_posts.post_author我的问题很简单:在不诉诸子查询的情况下,在分组之前是否需要对行进行排序?编辑:这个问题是对另一个问题的延续,我的具体情况略有不同。您可以(而且应该)假设还存在一个wp_posts.id,它是该特定帖子的唯一标识符。
添加回答
举报
0/150
提交
取消