左联接和计数在MYSQL中无法正常工作

时间:2019-11-28 08:44:43

标签: mysql sql group-by left-join

我有两个名为AB的表,在这里您可以看到AB

A    |  id   |   title
-------------------------
         1   |    A1
         2   |    A2
         3   |    A3   

B    |  A_id   |   title
-------------------------
         1     |    B1
         1     |    B2
         1     |    B3   

我想做的是计算B中A_id的数量,我尝试了以下查询:

select A.title as "title",count(title) as "count" from A left join B on A.id = B.A_id

这将给我以下结果:

title  |  count
---------------
  A1   |    3
  A2   |    1
  A3   |    1
  A4   |    1

我需要拥有的是:

title  |  count
---------------
  A1   |    3
  A2   |    0
  A3   |    0
  A4   |    0

2 个答案:

答案 0 :(得分:3)

有关您的查询的问题:

  1. 您的查询缺少bindir, sbindir, libexecdir, pkglibexecdir 子句。您似乎正在使用禁用了选项GROUP BY的MySQL版本,因此,MySQL不会向您抛出适当的错误,而是愉快地执行查询。

  2. ONLY_FULL_GROUP_BY含糊不清,因为该列存在于两个表中。这应该会产生一个错误。您实际上想依靠来自表count(title)的列;我将使用B,以防万一B.A_id中的某些记录为空B

考虑:

title

旁注:

    在MySQL中,
  • 我建议使用反引号作为标识符而不是双引号。这就是MySQL的方式

  • select A.title, count(B.A_id) as `count` from A left join B on A.id = B.A_id group by A.title 是重新发布的:它仅相当于A.title as title

答案 1 :(得分:2)

通过在计数内添加B.A_id来尝试以下操作

 select A.title as "title",count(B.A_id) as "count" 
from A left join B on A.id = B.A_id
group by A.title