SQL计算列中的每个不同值,并从ID匹配的另一个表中添加名称

时间:2012-07-13 03:11:21

标签: mysql sql join count group-by

我的SQL技能几乎没有。在环顾四周寻找这个问题后,我需要一些帮助。

我有2张表格如下

Table1                    Table2 

ID  | Name                Status_id
-----------               ----------
1   |   Open                  1
2   |   Closed                2
3   |   On-Hold               1

我想要做的是计算表2中的status_id并按status_id进行分组。然后在第一列中添加ID匹配的名称。

目前我所拥有的是

SELECT status_id, COUNT(*) AS 'num' FROM table2 GROUP BY status_id

到目前为止这很好并且返回

1   |   2
2   |   1

我需要返回的是

Open   |   2
Closed |   1

我希望这很清楚。有人可以帮忙吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id

答案 1 :(得分:1)

如果你想要保持零暂停,你需要进行左连接并从table2而不是*计算一列

SELECT t1.name,
       Count(t2.Status_id) AS num 
FROM   table1 t1 
       LEFT JOIN table2 t2 
               ON t1.id = t2.Status_id
GROUP  BY t1.name;

DEMO