MySQL - 跳过重复的WordPress条目

时间:2008-11-20 19:04:30

标签: php mysql wordpress

我正在编写一个脚本来显示10个最近“活跃”的WordPress博客帖子(即那些带有最新评论的帖子)。问题是,列表有很多重复。我想清除重复的东西。有没有一种简单的方法可以通过更改MySQL查询(如IGNORE,WHERE)或其他方法来实现此目的?这是我到目前为止所做的:

<?php

function cd_recently_active() {
    global $wpdb, $comments, $comment;
    $number = 10; //how many recently active posts to display? enter here

if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
    $comments = $wpdb->get_results("SELECT comment_date, comment_author, comment_author_url, comment_ID, comment_post_ID, comment_content FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");

    wp_cache_add( 'recent_comments', $comments, 'widget' );
}
?>

2 个答案:

答案 0 :(得分:3)

查看SELECT语句的DISTINCT选项。或者也可以使用GROUP BY语法(查看相同的链接)。虽然它们以不同的方式工作,但这些方法最有可能帮助您获得所需的两种方法。

答案 1 :(得分:0)

我以为我用GROUP BY想出来了,但现在我不太确定。这是代码:

    if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
    $comments = $wpdb->get_results("SELECT comment_post_ID, comment_author, comment_date FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID ORDER BY comment_date_gmt DESC LIMIT $number");
    wp_cache_add( 'recent_comments', $comments, 'widget' );
}

单个更改是添加GROUP BY comment_post_ID(我想要唯一的字段)。不幸的是,这“打破”了这个功能;它被冻结了,不会更新。

我也无法让DISTINCT工作。我正在跟进的一条评论来自http://www.webmasterworld.com/forum88/9204.htm

特别是,ergophobe的评论#:1259236说,“你遗漏了GROUP BY。没有它,你会得到一个给定topic_id的多个结果b / c这行不会是明显的。事实上,区别是不必要的,只有GROUP BY。

仍在寻找......