mysql - SQL 查询总和乘以 2 倍应该是多少

标签 mysql sql sum

当我运行此查询时,投票 sum 是应有的 2 倍(sum=6 而不是 3)。有人可以解决这个问题吗?

SELECT sum(votes.vote) AS sum
    , my_votes.vote IS NOT NULL AS did_i_vote
    , votes.parent_id, subject
    , review_date
    , item_id
    , review_summary
    , review, full_name
    , reputation
    , profile_picture
    , accounts.acct_id
FROM votes
RIGHT JOIN items_purchased 
    on votes.parent_id=items_purchased.purchase_id 
JOIN accounts 
    ON items_purchased.purchaser_account_id=accounts.acct_id  
JOIN items 
    on items_purchased.item_id=items.folder_id
LEFT JOIN votes AS my_votes 
    ON my_votes.parent_id=items_purchased.purchase_id 
    AND my_votes.acct_id='3' 
    AND my_votes.column_name='purchase_id' 
WHERE purchase_id='2' 
    AND deleted_p!=1 and pub_priv_p!=1                                       
GROUP BY items_purchased.purchase_id

我很确定它与 JOIN 有关,因为如果我去掉 items_purchased.item_id=items.folder_id 上的 JOIN items,则 sum=3。但是,我需要以某种方式加入其中。

想法?

最佳答案

没有模式我们无法判断,但这是一个猜测:

检查您的所有加入条件 - 您可能缺少导致该组结果“重复”的条件。

例如,如果我有一张 table

`Foo` with columns `A` `B` and `C` - A and B are the PK;
`Bar` with columns `A` `B` and `Z` - A and B are the PK;
`Biz` with columns `Z` `GOAL` 

我想计算每个 A 的目标数量,如果我只是使用 A 而不是 B 加入 Foo 到 Bar好吧,我可能会得到一个错误的计数。

查看此内容的最简单方法是执行 SELECT * 并删除分组依据

关于mysql - SQL 查询总和乘以 2 倍应该是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436268/

相关文章:

MySQL,如何将特定列克隆到新表中?

mysql - 在触发器中打印消息

sql - 有效地选择每位患者的最新费用

c - 我如何告诉 C 程序创建 n 个数组,通过 scanf 读取 n?

algorithm - 将数字的各个数字部分相加/求和的最快方法

php - 如何互连 Node.js 应用程序服务器和 LAMP 堆栈?

mysql 将不存在的记录显示为 0

sql - Filestream共享文件夹权限问题

mysql - 如何仅当单独表中的 SUM(字段) > 0 时才使用 MAX 来选择记录来识别最新的 'field'

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源