🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# SQL HAVING 子句 ## HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。 ### SQL HAVING 语法 ``` SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value ``` ## SQL HAVING 实例 我们拥有下面这个 "Orders" 表: | O_Id | OrderDate | OrderPrice | Customer | | --- | --- | --- | --- | | 1 | 2008/12/29 | 1000 | Bush | | 2 | 2008/11/23 | 1600 | Carter | | 3 | 2008/10/05 | 700 | Bush | | 4 | 2008/09/28 | 300 | Bush | | 5 | 2008/08/06 | 2000 | Adams | | 6 | 2008/07/21 | 100 | Carter | 现在,我们希望查找订单总金额少于 2000 的客户。 我们使用如下 SQL 语句: ``` SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000 ``` 结果集类似: | Customer | SUM(OrderPrice) | | --- | --- | | Carter | 1700 | 现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。 我们在 SQL 语句中增加了一个普通的 WHERE 子句: ``` SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVING SUM(OrderPrice)>1500 ``` 结果集: | Customer | SUM(OrderPrice) | | --- | --- | | Bush | 2000 | | Adams | 2000 |