Mysql 使用联接计数(*)

Mysql 使用联接计数(*),mysql,sql,database,select,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(*) ------------------

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

我想联接两个表,并获取一个表中的一列在另一个表中的总出现次数。 表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字段中是否存在匹配项。

您要加入的应该是Table2.company\u id,而不是Table2.id

您要加入的应该是Table2.company_id,而不是Table2.id


对不起,那是个打字错误。我补充了更多的问题,以便更具体地说明这个问题。CompanyA和companyB出现了,但是companyC没有。哦,我明白了,你应该使用左连接而不是内部连接。我会更新答案的。对不起,那是个打字错误。我补充了更多的问题,以便更具体地说明这个问题。CompanyA和companyB出现了,但是companyC没有。哦,我明白了,你应该使用左连接而不是内部连接。我会更新答案。
SELECT  Table1.company, count(*)
FROM    Table1 
        INNER JOIN Table2 
           ON Table1.id = Table2.company_id  -- <<== here
GROUP   BY Table1.company;
SELECT  Table1.company, count(Table2.company_id)
FROM    Table1 
        LEFT JOIN Table2 
           ON Table1.id = Table2.company_id  -- <<== here
GROUP   BY Table1.company;