在 mysql 中,having 子句用于篩選聚合函數(shù)的結(jié)果,僅影響聚合值,而非原始數(shù)據(jù)。它可以過(guò)濾聚合結(jié)果(按聚合值)、應(yīng)用多個(gè)篩選條件或?qū)酆辖Y(jié)果排序。
HAVING 子句在 MySQL 中的用法
HAVING 子句是在 MySQL 中用于篩選聚合結(jié)果(例如 SUM、COUNT、AVG 等)的行。它類似于 WHERE 子句,但它是在聚合函數(shù)執(zhí)行后再應(yīng)用的,因此只能引用聚合函數(shù)和分組列。
語(yǔ)法:
SELECT 聚合函數(shù)(列名) FROM 表名 GROUP BY 分組列 HAVING 篩選條件;
登錄后復(fù)制
用法:
HAVING 子句用于以下情況:
過(guò)濾聚合結(jié)果:根據(jù)聚合函數(shù)的值篩選行。例如,查找銷售額超過(guò) 1000 美元的訂單。
應(yīng)用多個(gè)篩選條件:可以使用多個(gè) HAVING 子句來(lái)應(yīng)用復(fù)雜的篩選條件。例如,查找銷售額超過(guò) 1000 美元且客戶類型為“批發(fā)”的訂單。
對(duì)聚合結(jié)果進(jìn)行排序:可以使用 HAVING 子句對(duì)聚合結(jié)果進(jìn)行排序。例如,按銷售額從高到低排序訂單。
示例:
查找銷售額超過(guò) 1000 美元的訂單:
SELECT SUM(銷售額) FROM 訂單表 GROUP BY 訂單號(hào) HAVING SUM(銷售額) > 1000;
登錄后復(fù)制
查找銷售額超過(guò) 1000 美元且客戶類型為“批發(fā)”的訂單:
SELECT SUM(銷售額) FROM 訂單表 GROUP BY 訂單號(hào) HAVING SUM(銷售額) > 1000 AND 客戶類型 = '批發(fā)';
登錄后復(fù)制
按銷售額從高到低排序訂單:
SELECT SUM(銷售額) FROM 訂單表 GROUP BY 訂單號(hào) HAVING SUM(銷售額) > 0 ORDER BY SUM(銷售額) DESC;
登錄后復(fù)制