Mysql 使用联接计数(*)
这可能很简单,但出于某种原因,我对此一无所知 我想联接两个表,并获取一个表中的一列在另一个表中的总出现次数。 表1Mysql 使用联接计数(*),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(*) ------------------
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;