使用连接计算(*)

时间:2013-01-22 03:03:58

标签: mysql sql database select

这可能很简单,但由于某些原因,我在这个上面留空了..

我想连接两个表,并在另一个表中的一个表中获取一个列的总出现次数。     表1

id | company
------------
 1 | companyA
 2 | companyB
 3 | companyC


Table2

id | company_id
------------
 1 |  2
 2 |  2
 3 |  1
 4 |  2
 5 |  3

结果应为:

company | count(*)
------------------
companyA| 1
companyB| 3
companyC| 1

我似乎无法使计数部分正确。我在想它会是这样的:

SELECT Table1.company, count(*)
FROM Table1 JOIN Table2 ON
Table1.id = Table2.company_id
GROUP BY Table1.company;

修订:问题实际上是公司A和公司B正确出现,但它没有显示公司C.我经历过并仔细检查了公司C的字段中是否存在匹配。

1 个答案:

答案 0 :(得分:4)

您要加入Table2.company_id并且 Table2.id

SELECT  Table1.company, count(*)
FROM    Table1 
        INNER JOIN Table2 
           ON Table1.id = Table2.company_id  -- <<== here
GROUP   BY Table1.company;

您必须在INDEX的{​​{1}}列上定义company可能是UNIQUE ),以便更快地发挥作用,因为您要将其与table分组

更新1

company