$postids = $wpdb->get_results(
"
SELECT ID, post_title, post_author, max(post_date)
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
GROUP BY post_author
ORDER BY post_date DESC
"
);
foreach ( $postids as $postid )
{
echo $postid->ID." :: ".$postid->post_title." :: ".$postid->post_author . "<br />" ;
}
我想从每个作者中选择一个最新的帖子,但是上面的代码仍然从每个作者中选择最老的帖子。Max (post_date)似乎不起作用。有什么建议吗?
您首先需要发现每个作者最近发布的文章的日期。
SELECT max(post_date) post_date, post_author
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
GROUP BY post_author
然后需要使用此结果提取所需帖子的详细信息。
SELECT a.ID, a.post_title, a.post_author, a.post_date
FROM $wpdb->posts a
JOIN (
SELECT max(post_date) post_date, post_author
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
GROUP BY post_author
) b ON a.post_author = b.post_author AND a.post_date = b.post_date
WHERE post_status = 'publish'
AND post_type = 'post'
ORDER BY post_date DESC
GROUP BY
在处理此目的时有点棘手。
注意:我还没有在WordPress环境中调试这个查询。
请注意,如果作者同时创建了两篇文章,它们的post_date值都将与MAX(post_date)值匹配。在这种情况下,该查询将两者都返回。