MySQL两个表查询计数

时间:2014-02-21 03:06:51

标签: mysql sql

我有两张桌子A&乙

Table A

GROUP #  |  GROUP NAME
   1         group a
   2         group b 
   3         group c

表B将有一个包含#组的列,然后是一堆其他数据。

我正在试图弄清楚如何创建一个将从表A返回GROUP NAME的查询以及与表B中每个组名相关联的行数。

基本上我正在尝试获得以下输出:

GROUP NAME | COUNT
  group a      x
  group b      y
  group c      z

我一直在尝试以下各种变化无济于事......

SELECT DISTINCT "GROUP NAME", COUNT(*) from A, B where A.GROUPNUM = B.GROUPNUM;

2 个答案:

答案 0 :(得分:2)

您需要在群组COUNT()上使用汇总GROUP NAME(使用GROUP BY)来获取您要查找的计数。 DISTINCT在这种情况下不起作用,

请注意,带空格的列名称需要使用反引号引用,而不是单引号或双引号。我也用一个明确的INNER JOIN替换你的隐式连接,这是现代首选语法。

SELECT
  `GROUP NAME`,
  COUNT(B.GROUPNUM)
FROM
  A
  INNER JOIN B ON A.GROUPNUM = B.GROUPNUM
GROUP BY `GROUP NAME`

这是一个小小的示范:http://sqlfiddle.com/#!2/2123f/2

答案 1 :(得分:1)

请尝试以下操作,请注意,如果您还想在表a上显示表b上没有行的组名,则需要使用左连接(如下所示)。

select a.group_name, count(b.groupnum)
  from a
  left join b
    on a.groupnum = b.groupnum
 group by a.group_name