当我运行此查询时,投票 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/