如题所示
表结构如下:
DROP TABLE IF EXISTS student;
CREATE TABLE student
(id
int(5) NOT NULL AUTO_INCREMENT,name
varchar(10) DEFAULT NULL,subject
varchar(10) DEFAULT NULL,grade
double(4,1) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;
我要获取全部科目都及格的学生姓名,那么我这么写
例如 select name from student group by name having min(grade)>60
min(grade)并没有出现在select列表中,为什么这种写法还支持呢?
数据库MySQL 5.5
为什么不支持呢?
select
是最后才处理的一个动作(projection)。这时根据having
子句计算出的结果表已经准备好了,select
只是选出其中特定的栏位而已。