我发现了一些类似的问题和好的答案,但我无法弄清楚如何将其应用于我的具体案例。我有一个网站,用户可以从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最常用的数字? (也许如何保护变量中的结果以更新循环中另一个表中的每个帖子?)非常感谢你的帮助。问候
答案 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