SQL中Where子句和Having子句的区别
1. WHERE子句
WHERE 子句用于过滤表中的记录或在连接多个表时使用。只有满足 WHERE 子句中指定条件的记录才会被提取。它可以与 SELECT、UPDATE、DELETE 语句一起使用。
让我们考虑下表“student” –
Roll_no S_Name Age
1 a 17
2 b 20
3 c 21
4 d 18
5 e 20
6 f 17
7 g 21
8 h 17
考虑查询语句:
SELECT S_Name, Age FROM Student
WHERE Age >=18
查询结果如下:
S_Name Age
b 20
c 21
d 18
e 20
g 21
2. HAVING子句
HAVING 子句用于根据 HAVING 子句中的给定条件从组中过滤记录。满足给定条件的组将出现在最终结果中。只能使用 HAVING 子句
用 SELECT 语句。
让我们考虑上面提到的 Student 表并对其应用有子句:
SELECT Age, COUNT(Roll_No) AS No_of_Students
FROM Student GROUP BY Age
HAVING COUNT(Roll_No) > 1
查询结果如下:
Age No_of_Students
17 3
20 2
21 2
SQL中Where子句和Having子句的区别:
SR.NO. | WHERE 子句 | HAVING 子句 |
---|---|---|
1 | WHERE子句用于根据指定条件过滤表中的记录。 | HAVING 子句用于根据指定条件从组中过滤记录。 |
2 | WHERE 子句可以在没有 GROUP BY 子句的情况下使用 | HAVING 子句不能在没有 GROUP BY 子句的情况下使用 |
3 | WHERE 子句在行操作中实现 | HAVING 子句在列操作中实现 |
4 | WHERE子句不能包含聚合函数 | HAVING子句可以包含聚合函数 |
5 | WHERE 子句可以与SELECT、UPDATE、DELETE 语句一起使用。 | HAVING 子句只能与 SELECT 语句一起使用。 |
6 | WHERE 子句用在 GROUP BY 子句之前 | HAVING 子句用在 GROUP BY 子句之后 |
7 | WHERE 子句与 UPPER、LOWER 等单行函数一起使用。 | HAVING 子句与 SUM、COUNT 等多行函数一起使用。 |