这里以实验楼的数据库来记录,如有侵犯实验楼权益,请联系本人,必定删除
在此感谢实验楼提供的免费教程 MySQL 基础课程_SQL - 实验楼
一、
表project employee
任务:想要知道名为 "Tom" 的员工所在部门做了几个工程。
条件:员工信息储存在 employee 表中,但工程信息储存在 project 表中。
1 SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt 2 HAVING of_dpt IN 3 (SELECT in_dpt FROM employee WHERE name='Tom');
()里的SELECT语句返回的结果"dpt4"给HAVING of_dpt IN 使用,效果其实就是HAVING of_dpt IN 'dpt4'
HAVING 语句可用的条件和WHERE一样,不过HAVING 是用于分组后即对查询结果数据的筛选,而WHERE是用于查询时筛选
第一行代码中GROUP BY 是分组,类似于把of_dpt作为组长,然后查询的数据以of_dpt分组
如图,从project里查询of_dpt组的数据(组长dpt1、dpt2、dpt3、dpt4)中各组长proj_name的次数,然后在查询的结果里,再用HAVING 筛选出dpt4组长的数据
二、
[图片来自实验楼shiyanlou.com]