SQL COUNT()函数和LEFT OUTER JOIN

时间:2014-09-07 15:45:32

标签: mysql sql database count left-join

我有两个表,用户和部门。我想拥有表,其中有两列:第一个是部门名称,第二个是计数 - 分配给该部门的用户数量。 我有这段代码:

SELECT department_name as 'deptName', 
       COUNT(users.department_id) as 'userCount' 
FROM departments
LEFT OUTER JOIN users
ON departments.id = users.department_id 
GROUP BY 'deptName'

部门的表格列是:

 integer id PK

 varchar(20) department_name

用户的表格列是:

 integer id PK

 varchar(20) name

 varchar(20) surname

 int department_id FK

但它不起作用。

现在我有2个部门,输出应该是2行,第一行是计数8,第二行是计数1. 但我只看到一行,所有计数(9)。 我使用安装了XAMPP的MySQL。

1 个答案:

答案 0 :(得分:10)

SELECT department_name as 'deptName',
       COUNT(users.department_id) as 'userCount'
  FROM departments
  LEFT OUTER JOIN users
    ON departments.id = users.department_id
 GROUP BY `deptName`

注意GROUP BY中的刻度线与单引号(这是键盘上1的左侧的键)。请参阅:http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

您也可以按department_name分组(字段本身,而不是别名)

目前您正在对文字值'deptName'进行分组,而不是您给出deptName别名的字段,这就是您只返回1行的原因。你实际上并没有进行任何分组。

相关问题