首頁歷史 > 正文

23.MySQL中的HAVING(分組過濾)

2022-02-17由 碼海無際 發表于 歷史

1.準備

CREATE DATABASE mahaiwuji;USE mahaiwuji;CREATE TABLE student ( sid INT (4) PRIMARY KEY, sname VARCHAR (36), course VARCHAR (36), score INT, grade INT (4)) ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO student VALUES (1,‘aa’,‘語文’,60,1);INSERT INTO student VALUES (2,‘aa’,‘數學’,70,1);INSERT INTO student VALUES (3,‘aa’,‘英語’,80,1);INSERT INTO student VALUES (4,‘bb’,‘語文’,70,1);INSERT INTO student VALUES (5,‘bb’,‘數學’,60,1);INSERT INTO student VALUES (6,‘bb’,‘英語’,60,1);INSERT INTO student VALUES (7,‘cc’,‘語文’,90,2);INSERT INTO student VALUES (8,‘cc’,‘數學’,50,2);INSERT INTO student VALUES (9,‘cc’,‘英語’,60,2);INSERT INTO student VALUES (10,‘dd’,‘語文’,70,2);INSERT INTO student VALUES (11,‘dd’,‘數學’,60,2);INSERT INTO student VALUES (12,‘dd’,‘英語’,90,2);

23.MySQL中的HAVING(分組過濾)

2.例項演示

功能:

根據條件表示式

對分組後的內容

進行過濾,因此使用having時通常都會先使用group by。

—— 查詢平均分大於68分的人SELECT sname,AVG(score) FROM student GROUP BY sname HAVING AVG(score)>68;

23.MySQL中的HAVING(分組過濾)

3.HAVING和WHERE的異同

相同

都是對資料過濾,只保留有效的資料。

不同

WHERE是對原始的記錄過濾,HAVING是對分組之後的記錄過濾;WHERE必須的寫在HAVING的前面,順序不可顛倒否則執行出錯。

頂部