鍍金池/ 問答/Python  數(shù)據(jù)庫/ sql中having 子句中的字段必須出現(xiàn)在select列表中么?

sql中having 子句中的字段必須出現(xiàn)在select列表中么?

如題所示

表結構如下:

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)并沒有出現(xiàn)在select列表中,為什么這種寫法還支持呢?
數(shù)據(jù)庫MySQL 5.5

回答
編輯回答
雨蝶

having子句是限制哪些group出現(xiàn)在結果集中,和是否在select的字段中出現(xiàn)沒有關系。

2017年8月12日 14:38
編輯回答
蔚藍色

為什么不支持呢?

select 是最后才處理的一個動作(projection)。這時根據(jù)having子句計算出的結果表已經(jīng)準備好了,select只是選出其中特定的欄位而已。

2017年8月7日 05:35
編輯回答
朽鹿

你只查詢了name字段,為什么min(grade)會出現(xiàn)在select里?

2018年6月13日 10:17