来自同一 ID 的 SQL 列的 SUM 值
Posted
技术标签:
【中文标题】来自同一 ID 的 SQL 列的 SUM 值【英文标题】:SUM values from SQL column from same ID 【发布时间】:2013-04-22 01:27:09 【问题描述】:这是来自 wordpress 的 comment_meta。里面有一个自定义的 meta_key: rating。
我想获得该帖子的所有评分的总和。
这样做的目的是从用户评分中获取平均值。我有评论者的总数,我只需要 SUM。
它的用途是用于 Schema.org AggregateReview:<meta itemprop="ratingValue" content=""/>
。
我尝试通过 jQuery 添加值,但由于某种原因,架构没有注册稍后在 DOM 中添加的文本。
var sum = 0;
$('.comment_rate').each(function()
numItems = $('.comment_rate').length
sum += (parseFloat($(this).text()) / numItems);
$('span[itemprop="ratingValue"]').text(sum);
);
原帖
我有这张桌子(抱歉,图片只是我知道如何展示的方式):
我想对匹配的comment_id
中的meta_value
求和。
到目前为止,我有这个,但它对整个列求和,而不是匹配相同 id 的列。
<?php
$result = mysql_query('SELECT SUM(meta_value) AS value_sum FROM wp_play_commentmeta');
$row = mysql_fetch_assoc($result);
$sum = $row['value_sum'];
echo $sum;
?>
【问题讨论】:
【参考方案1】:使用GROUP BY
:
SELECT comment_id, SUM(meta_value) AS value_sum
FROM wp_play_commentmeta
GROUP BY comment_id;
在这里查看它的实际效果:
SQL Fiddle Demo。如果您只想对那些具有rating
元密钥的人执行此操作,则将其添加到WHERE
子句中。像这样的:
SELECT comment_id, SUM(meta_value) AS value_sum
FROM wp_play_commentmeta
wHERE meta_key = 'rating'
GROUP BY comment_id;
Updated SQL Fiddle Demo
更新:
JOIN
两个表和GROUP BY post_id
。像这样的:
SELECT
p.post_id,
SUM(m.meta_value) AS value_sum
FROM wp_play_commentmeta AS m
INNER JOIN wp_play_comments AS p ON m.comment_ID = p.comment_Id
wHERE meta_key = 'rating'
GROUP BY p.post_id;
注意:请停止使用Mysql_*
扩展,它们已被弃用。此外,您的代码以这种方式容易受到SQL Injection 的攻击。请改用PDO
或准备好的语句。
【讨论】:
是的,这会奏效,但我完全忽略了无法匹配收视率,而不是 comment_id @Ahhhhhhhhhhhhhdfgbv - 你是什么意思?这不是你要找的吗?您能否更新您的问题并向我展示您正在寻找的预期结果?谢谢。 @Ahhhhhhhhhhhhdfgbv - 你的意思是,SUM
只有meta_value
对于那些拥有meta_key
= rating
的人??
我更新了,希望它有意义。抱歉,我的问题是愚蠢的,这是一个迟到的认识。
@Ahhhhhhhhhhhhhdfgbv 第二个查询应该给你你在找什么,它应该给你每条评论的总和或评级。这不是你想要的吗?你试过了吗?【参考方案2】:
查询将是
SELECT SUM(meta_value) AS value_sum, comment_id FROM wp_play_commentmeta
Group by comment_id
【讨论】:
以上是关于来自同一 ID 的 SQL 列的 SUM 值的主要内容,如果未能解决你的问题,请参考以下文章