MySQL HAVING:指定过滤条件
生活随笔
收集整理的這篇文章主要介紹了
MySQL HAVING:指定过滤条件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在 MySQL SELECT 語(yǔ)句中,除了能使用 GROUP BY 子句分組數(shù)據(jù)外,還可以使用 HAVING 子句過濾分組,在結(jié)果集中規(guī)定了包含哪些分組和排除哪些分組。
?
語(yǔ)法格式如下:
HAVING <條件>
其中,<條件>指的是指定的過濾條件。
HAVING 子句和 WHERE 子句非常相似,HAVING 子句支持 WHERE 子句中所有的操作符和語(yǔ)法,但是兩者存在幾點(diǎn)差異:
- WHERE 子句主要用于過濾數(shù)據(jù)行,而 HAVING 子句主要用于過濾分組,即 HAVING 子句基于分組的聚合值而不是特定行的值來過濾數(shù)據(jù),主要用來過濾分組。
- WHERE 子句不可以包含聚合函數(shù),HAVING 子句中的條件可以包含聚合函數(shù)。
- HAVING 子句是在數(shù)據(jù)分組后進(jìn)行過濾,WHERE 子句會(huì)在數(shù)據(jù)分組前進(jìn)行過濾。WHERE 子句排除的行不包含在分組中,可能會(huì)影響 HAVING 子句基于這些值過濾掉的分組。
【實(shí)例】根據(jù) dept_id 對(duì) tb_students_info 表中的數(shù)據(jù)進(jìn)行分組,已經(jīng)為大家精心準(zhǔn)備了大數(shù)據(jù)的系統(tǒng)學(xué)習(xí)資料,從Linux-Hadoop-spark-......,需要的小伙伴可以點(diǎn)擊并顯示學(xué)生人數(shù)大于1的分組信息,輸入的 SQL 語(yǔ)句和執(zhí)行結(jié)果如下所示。
mysql> SELECT dept_id,GROUP_CONCAT(name) AS names -> FROM tb_students_info -> GROUP BY dept_id -> HAVING COUNT(name)>1; +---------+---------------+ | dept_id | names | +---------+---------------+ | 1 | Dany,Jane,Jim | | 2 | Henry,John | | 3 | Green,Thomas | | 4 | Susan,Tom | +---------+---------------+ 4 rows in set (0.07 sec)?
?
總結(jié)
以上是生活随笔為你收集整理的MySQL HAVING:指定过滤条件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL GROUP BY:分组查询
- 下一篇: MySQL REGEXP:正则表达式查询