測試必備的Mysql常用sql語句系列
https://www.cnblogs.com/poloyy/category/1683347.html
前言
- having關鍵字對group by分組后的數據進行過濾
- having支持where的所有操作符和語法
where 和 having 的一些差異性
where | having |
不可以使用聚合函數 | 可以使用聚合函數 |
數據 group by 前過濾 | 數據 group by 后過濾 |
查詢條件中不可以使用字段別名 | 查詢條件中可以使用字段別名 |
用於過濾數據行 | 用於過濾分組后的結果集 |
根據數據表的字段直接過濾 | 根據已查詢出的字段進行過濾 |
having 的語法格式
HAVING <查詢條件>
確認測試表里有什么數據,方便后面的栗子做對比
having 單獨使用的栗子
根據age分組,將分組后的結果過濾出departmen為seewo的分組記錄
select *,GROUP_CONCAT(username) from yyTest group by age having department = "seewo";
having + where 的栗子
- 先查詢sex = 1的所有記錄
- 將查詢的記錄按照department分組
- 然后過濾出department=seewo的分組
select *,GROUP_CONCAT(username) from yyTest where sex = "1" group by department having department = "seewo"
having + where + 聚合函數的栗子
- sex = 1的所有記錄
- 將查詢的記錄按照department分組
- 然后過濾出max(date) > "2020-05-08"的分組
select *,GROUP_CONCAT(date) from yyTest where sex = "1" group by department having max(date) > "2020-05-08"