2

这可能很简单,但由于某种原因,我对此一无所知..

我想连接两个表并在另一个表中的一个表中获取列的总出现次数。表格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;

修改:问题实际上是companyA和companyB正确出现,但它没有显示companyC。我仔细检查了companyC的字段中是否存在匹配项。

4

1 回答 1

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;

您必须在of 列上定义一个INDEX可能是 UNIQUE)以获得更快的性能,因为您将它与companytablecompany

更新 1

SELECT  Table1.company, count(Table2.company_id)
FROM    Table1 
        LEFT JOIN Table2 
           ON Table1.id = Table2.company_id  -- <<== here
GROUP   BY Table1.company;
于 2013-01-22T03:04:53.627 回答