【问题标题】:SQL Left Join using COUNT使用 COUNT 的 SQL 左连接
【发布时间】:2014-12-10 00:50:45
【问题描述】:

我的查询是如此接近,我几乎经历了所有其他发布此问题的时间,但我并不完全在那里。

SELECT a.name, IFNULL(b.student_id, 0) AS count 
FROM student AS a 
LEFT JOIN (SELECT  student_id, COUNT(*) as count FROM quizactivity GROUP BY  student_id) 
AS b 
ON a.id = b.student_id;

这将返回一个表,其中包含四个条目的名称,然后是它们自己表上的实际 id,a.id。

Name | Count
Will   1
Jane   2
Sally   0
Dave   4

Sally 返回 0,因为她没有结果。 我很清楚返回表的 id 而不是计数 - 我哪里错了?

【问题讨论】:

    标签: mysql sql join count


    【解决方案1】:

    你不想计数吗?

    SELECT a.name, COALESCE(b.count, 0) AS count 
    FROM student a LEFT JOIN
         (SELECT student_id, COUNT(*) as count
          FROM quizactivity
          GROUP BY  student_id
        ) b 
        ON a.id = b.student_id;
    

    【讨论】:

    • coalesce() 只是ISNULL() 的ANSI 标准版本。两者都可以使用,尽管coalesce() 更通用,因为它接受两个以上的参数(返回第一个非NULL 值)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多