我有两个表,用户和部门。我想要一个表,其中有两列:第一列是部门名称,第二列是计数 - 有多少用户分配给了这个部门。 我有这段代码:
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。
最佳答案
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 行的原因。您实际上并没有进行任何分组。
关于mysql - SQL COUNT() 函数和 LEFT OUTER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25712039/