mysql sum返回错误的值

时间:2015-04-30 11:02:03

标签: mysql wordpress sum left-join inner-join

您好,所以我在以下查询中遇到此问题,在wp_wti_like_post内部,我的行数与post_id相似,value列为1或{{ 1}}。
因此,对于标识为-1的帖子,请说我只有一行,因此727应为sum,但不知道为什么会返回1 1}}当有4two时,它返回727查询如下:

8

1 个答案:

答案 0 :(得分:3)

你在许多表中使用连接,并且它们中的任何一个都可能有post_id的许多关联,因此你的sum is incorrect我建议你使用子选择你的表并计算在子选择中求和,然后加入主查询

SELECT 
  p.*, COALESCE(l.sum_like,0) AS total_sum,
  l.post_id 
FROM
  wp_posts p 
  INNER JOIN wp_term_relationships ttr 
    ON (p.ID = ttr.object_id) 
  INNER JOIN wp_term_taxonomy tt 
    ON (ttr.term_taxonomy_id = tt.term_taxonomy_id) 
  LEFT JOIN (
      SELECT post_id ,SUM(`value`) sum_like
      FROM wp_wti_like_post 
      GROUP BY post_id
  ) l ON (p.ID = l.post_id) 
WHERE tt.taxonomy = 'category' 
  AND tt.term_id IN ('21') 
  AND p.post_type = 'post' 
  AND (p.post_status = 'publish') 
HAVING total_sum > 2 
ORDER BY p.post_date DESC 

另请注意,我已删除了wp_postmeta加入,因为它未在您的选择条件中使用,并且您的过滤条件中也没有wp_postmeta为每个帖子存储不同的属性,所以我猜这个表格会产生更多的行数计算错误总和的原因。

Removed -4 from query