SQL COUNT()函数和LEFT OUTER JOIN

Rad*_*ski 5 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'
Run Code Online (Sandbox Code Playgroud)

部门的表格列是:

 integer id PK

 varchar(20) department_name
Run Code Online (Sandbox Code Playgroud)

用户的表列是:

 integer id PK

 varchar(20) name

 varchar(20) surname

 int department_id FK
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

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

Bri*_*lia 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`
Run Code Online (Sandbox Code Playgroud)

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

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

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