向我解释一个MySQL查询

时间:2014-01-14 02:54:02

标签: mysql sql

我很难弄清楚下面的mysql查询是如何工作的

SELECT dp.name, COUNT(em.dp) as employees 
FROM dp LEFT JOIN em ON dp.name=em.dp 
GROUP BY dp.name 
HAVING COUNT(em.dp) = 2;

它只显示哪些部门有2名员工。以下是两个表格:

em
----
id
full_name
dp


dp
----
id
name

这些是我输入的一些条目。

INSERT INTO em (full_name, dp) VALUES ('Chris', 'ENG'), ('Steve', 'HR'), ('Mike', 'ACC'), ('Marvin', 'ACC');
INSERT INTO dp (name) VALUES ('ENG'), ('HR'), ('ACC');

有人可以用简单明了的方式解释上述问题吗?就像先发生的那样,等等。

2 个答案:

答案 0 :(得分:0)

查询将所有部门(来自dp.name)分组,并返回该部门中的员工数量。

为了使这个可视化,您可以绘制出一个表,其中包含两个表中的所有列,基本上就是您的JOIN。

然后,您可以通过从上表中一次明确地获取每个部门名称并为每个部门创建一行(这是GROUP BY所执行的操作)并检查该部门的次数来绘制第二个表。显示在第一个表中(这是计数函数)。

答案 1 :(得分:0)

您是否尝试过使用mysql EXPLAIN命令?您可以从mysql控制台访问它。