Mysql常用sql語句(13)- having 過濾分組結果集


測試必備的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 的栗子

  1. 先查詢sex = 1的所有記錄
  2. 將查詢的記錄按照department分組
  3. 然后過濾出department=seewo的分組
select *,GROUP_CONCAT(username) from yyTest where sex = "1" group by department having department = "seewo"

 

having + where + 聚合函數的栗子

  1. sex = 1的所有記錄
  2. 將查詢的記錄按照department分組
  3. 然后過濾出max(date) > "2020-05-08"的分組
select *,GROUP_CONCAT(date) from yyTest where sex = "1" group by department having max(date) > "2020-05-08"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM