我有两张桌子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;
答案 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