选择A中的所有记录以及MySQL中{B}的相应记录数量

时间:2017-04-04 20:13:16

标签: mysql

这是我第一次真正使用MySQL ...

我遇到以下情况:

我得到了表A和B.  A与B具有1:n的关系。  (B有一个指向A的外键列。)

我需要的结果:

A中的所有记录加上B中所有记录的计数相关  记录在A。

示例:

Example

到目前为止我做了什么:

我创建了以下查询:

SELECT A.*, COUNT(*) AS B_count
    FROM $db.A AS A JOIN $db.B AS B ON (A.id=B.A_id)
    GROUP BY A.id

我的问题:

我创建的查询只返回A中的记录,这些记录中包含与B相关的记录(ON语句)

问题:

我还需要做些什么才能获得A中与B相关的0条记录的所有记录?

2 个答案:

答案 0 :(得分:1)

要获得0计数的行,您必须使用LEFT join,如:

SELECT A.*, COUNT(B.id) AS B_count
FROM $db.A AS A LEFT JOIN $db.B AS B ON (A.id=B.A_id)
GROUP BY A.id

答案 1 :(得分:1)

USE LEFT JOIN并计算B.id,如果你没有匹配,你将获得null并且count将返回0

SELECT A.*, COUNT(B.id)
FROM TableA A
LEFT JOIN  TableB B
  ON A.id = B.id