mysql - SQL COUNT() 函数和 LEFT OUTER JOIN

标签 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。

最佳答案

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/

相关文章:

mysql - 我如何将其从 TSQL 转换为 MYSQL?

mysql - SQL 查询两个表并合并结果(有一些变化)

sql - BigQuery 无法保存使用函数的 View

mysql - 我想将一个表的特定数据迁移到 MySql 中另一个数据库中的另一个特定列

MySQL 负载均衡

sql - 不使用临时表从表中删除重复项

php - SQLSTATE[42000] : Syntax error or access violation: 1064 You have an error in your SQL syntax — PHP — PDO

mysql - 数据库分区说明

MYSQL - 向已填充的数据添加固定数字

json - 编写查询在 json 记录中搜索,在 postgreSQL 中的另一个 json 中搜索