SQL关键字having和where的区别

where 关键字:作为检索条件,在生成临时表前起作用,进行筛选;

having 关键字:同样作为检索条件,但是是在生成临时表之后,进行筛选;

在下面数据表中:

使用SQL 语句:select emp_no,first_name from employees where gender='M';

执行的时候,SQL先找出所有符合gender='M'的行,再显示对应的emp_no,first_name;

而此时如果使用SQL语句:select emp_no,first_name from employees having gender='M';就会显示出错,

因为此时,SQL先执行的是select emp_no,first_name from employees 这个语句,生成如下所示的临时表

然后,再去查找该临时表中符合having gender='M'这个条件的字段予以显示,但是很明显,这个临时表并不存在该字段,所以出错。

原文地址:https://www.cnblogs.com/dengkaien/p/8311586.html