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

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

如題所示

表結(jié)構(gòu)如下:

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;

我要獲取全部科目都及格的學(xué)生姓名,那么我這么寫
例如 select name from student group by name having min(grade)>60
min(grade)并沒(méi)有出現(xiàn)在select列表中,為什么這種寫法還支持呢?
數(shù)據(jù)庫(kù)MySQL 5.5

回答
編輯回答
雨蝶

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

2017年8月12日 14:38
編輯回答
蔚藍(lán)色

為什么不支持呢?

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

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

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

2018年6月13日 10:17