where 和 hving 的使用區別
阿新 • • 發佈:2018-12-07
題目描述
查詢成績漲幅超過10次的學生號stu_no以及其對應的漲幅次數t
CREATE TABLE `students` (
`stu_no` int(11) NOT NULL,
`grade` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`stu_no`,`from_date`));
select stu_no,count(stu_no) as t from students group by stu_no HAVING t > 15 select stu_no,count(stu_no) as t from students where count(stu_no) > 15 group by stu_no
WHERE語句在GROUP BY語句之前;SQL會在分組之前計算WHERE語句。
HAVING語句在GROUP BY語句之後;SQL會在分組之後計算HAVING語句。
所以第二種方法是錯誤的,sql語句的執行過程是:from-->where-->group by -->having --- >order by --> select;
聚合函式是針對結果集進行的,where之後並不是結果集,所以主函式放在where語句中,會出現錯誤,
而having是針對結果集做篩選,用having來代替where,having一般跟在group by後