mysql获得每个帖子最常值的结果

时间:2015-02-07 22:16:54

标签: php mysql wordpress

我发现了一些类似的问题和好的答案,但我无法弄清楚如何将其应用于我的具体案例。我有一个网站,用户可以从1-6评价最喜欢的帖子。每个号码都是不同的类别。

现在我需要知道每一篇文章的最常票数。所以我需要计算每个帖子ID,而不是每个帖子ID的最常见值。

之后,我想更新另一个表中的每个结果。 (现在不知道如何解决这个问题我还没有使用Mysql那么好。)

这是两列我需要知道post_id中每个帖子的存在频率以及每个帖子中最常投票的数字。

只是我的表格的一个例子(值=投票)

value | post_id               
---------------
  3    |   12
  1    |   6
  4    |   13
  2    |   5
  6    |   12
  5    |   6  

我需要像这样的输出来知道哪个帖子主要是针对哪个类别的投票。

post | most voted in this category               
---------------
  1    |   3
  2    |   5
  3    |   6
  4    |   1
  5    |   4
  6    |   6  

我需要为表格中的每个帖子提供此信息。而且我需要更新另一个表中的每个帖子。我想我必须在一个循环中这样做。 但我已经陷入了第一部分。

我只有这个。第一部分。

    <?php global $wpdb;

$test = $wpdb->get_results('SELECT posts_id, value, COUNT(posts_id) AS ActionCount
FROM rating_item_entry_value
GROUP BY posts_id
ORDER BY ActionCount DESC'); 
echo '<pre>';
print_r($test);
echo '</pre>';

这是我得到的输出

    Array
(
    [0] => stdClass Object
        (
            [posts_id] => 0
            [value] => 5
            [ActionCount] => 7
        )

    [1] => stdClass Object
        (
            [posts_id] => 221
            [value] => 3
            [ActionCount] => 3
        )

    [2] => stdClass Object
        (
            [posts_id] => 197
            [value] => 5
            [ActionCount] => 2
        )

    [3] => stdClass Object
        (
            [posts_id] => 164
            [value] => 3
            [ActionCount] => 1
        )

)

示例。

我不知道如何更好地做到这一点,尝试了很多,但无法弄清楚。有没有人有一个很好的解决方案如何获得每个id最常用的数字? (也许如何保护变量中的结果以更新循环中另一个表中的每个帖子?)非常感谢你的帮助。问候

1 个答案:

答案 0 :(得分:0)

最常见的是指计数聚合和按频率分组。你可以把它映射到你的问题:

select
    x.amount,
    count(*) as times -- I forgot that row
from
    X x
group by
    x.amount
order by
    count(*) DESC

//编辑你的意思是

select
    post_id,
    value,
    count(*)
from
    your_table
group by
    post_id,
    value
order by
    count(*) desc