SQL查询与coalesce内部连接和子查询返回null

时间:2015-10-28 03:26:00

标签: mysql sql subquery left-join

我的查询返回null,我想要一个0.我认为它与子查询中的coalesce有关,但是我无法改变任何东西。有问题的查询:

SELECT c.post_id, c.post_name, c.post_content, c.post_datetime, c.user_name, 
    p.like_count, 
    p.dislike_count, 
    s.comment_count
FROM posts c 
    LEFT JOIN (
       select post_id, 
              sum(like_count) like_count,
              sum(dislike_count) dislike_count
       from post_likes
       group by post_id
    ) p ON c.post_id = p.post_id 
    LEFT JOIN (
       select post_id, COALESCE(sum(comment_count),0) comment_count
       from comments
       group by post_id
    ) s ON c.post_id = s.post_id 
WHERE c.user_name = 'test' 

它正在返回正确的金额,但COALESCE似乎没有任何影响。

1 个答案:

答案 0 :(得分:3)

你的怀疑是正确的。将COALESCE向上移动到外部查询,您应该很好。它不起作用的原因是COALESCE仅适用于s派生表表达式中的行。如果s中左侧外部联接中的cs没有匹配的行,则s(包括合并列)的任何内容都不会从#lang racket 返回。您将获得所有列的NULL。