directory search
SQL 基础教程 SQL 语法 SQL SELECT 语句 SQL SELECT DISTINCT 语句 SQL WHERE 子句 SQL AND & OR 运算符 SQL ORDER BY 关键字 SQL INSERT INTO 语句 SQL UPDATE 语句 SQL DELETE 语句 SQL 函数 SQL Date 函数 SQL NULL 函数 SQL 函数 SQL AVG() 函数 SQL COUNT() 函数 SQL FIRST() 函数 SQL LAST() 函数 SQL MAX() 函数 SQL MIN() Function SQL SUM() Function SQL GROUP BY 语句 SQL HAVING 子句 SQL UCASE() 函数 SQL LCASE() 函数 SQL MID() 函数 SQL LEN() 函数 SQL ROUND() 函数 SQL NOW() 函数 SQL FORMAT() 函数 SQL 快速参考 SQL 主机 SQL 高级教程 SQL SELECT TOP 子句 SQL LIKE 操作符 SQL 通配符 SQL IN 操作符 SQL BETWEEN 操作符 SQL 别名(Aliases) SQL 连接(Joins) SQL INNER JOIN 关键字 SQL LEFT JOIN 关键字 SQL RIGHT JOIN 关键字 SQL FULL OUTER JOIN 关键字 SQL UNION 操作符 SQL SELECT INTO 语句 SQL INSERT INTO SELECT 语句 SQL CREATE DATABASE 语句 SQL CREATE TABLE 语句 SQL 约束(Constraints) SQL NOT NULL 约束 SQL UNIQUE 约束 SQL PRIMARY KEY 约束 SQL FOREIGN KEY 约束 SQL CHECK 约束 SQL DEFAULT 约束 SQL CREATE INDEX 语句 SQL 撤销索引、撤销表以及撤销数据库 SQL ALTER TABLE 语句 SQL AUTO INCREMENT 字段 SQL 视图(Views) MySQL NOW() 函数 MySQL CURDATE() 函数 MySQL CURTIME() 函数 MySQL DATE() 函数 MySQL EXTRACT() 函数 MySQL DATE ADD() 函数 MySQL DATE SUB() 函数 MySQL DATEDIFF() 函数 MySQL DATE FORMAT() 函数 SQL Server GETDATE() 函数 SQL Server DATEPART() 函数 SQL Server DATEADD() 函数 SQL Server DATEDIFF() 函数 SQL Server CONVERT() 函数 SQL NULL 值 SQL 通用数据类型 SQL 用于各种数据库的数据类型
characters

SQL HAVING 子句



HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与 Aggregate 函数一起使用。

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;

演示数据库

在本教程中,我们将使用众所周知的 Northwind 样本数据库。

下面是选自 "Orders" 表的数据:

OrderID CustomerID EmployeeID OrderDate ShipperID
10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

选自 "Employees" 表的数据:

EmployeeID LastName FirstName BirthDate Photo Notes
1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

SQL HAVING 实例

现在我们想要查找订单总数少于 2000 的客户。

我们使用下面的 SQL 语句:

下面的 SQL 语句查找注册超过 10 个订单的员工:

实例

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

现在我们想哟啊查找员工 "Davolio" 或 "Fuller" 是否拥有超过 25 个订单。

我们在 SQL 语句中增加一个普通的 WHERE 子句:

实例

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
WHERE LastName='Davolio' OR LastName='Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
Previous article: Next article: