📜  SQL 中的 Have vs Where 子句

📅  最后修改于: 2021-09-09 11:47:26             🧑  作者: Mango

之间的差具有与其中SQL子句是where子句与骨料一起使用卡恩OT,但具有子句。

where子句适用于行的数据,而不适用于聚合数据。让我们考虑下表“标记”。

学生课程成绩

一个 c1 40

一个 c2 50

b c3 60

d c1 70

e c2 80

考虑查询

SELECT Student, Score FROM Marks WHERE Score >=40

这将逐行选择数据。

have子句适用于聚合数据。

例如,以下查询的输出

SELECT Student, SUM(score) AS total FROM Marks GROUP BY Student

学生总数

一个 90

60

d 70

80

当我们在上面的查询中应用具有时,我们得到

SELECT Student, SUM(score) AS total FROM Marks GROUP BY Student

HAVING total > 70

学生总数

一个 90

80

注意:这不是预定义的规则,但在大量 SQL 查询中,我们在 GROUP BY 之前使用 WHERE,在 GROUP BY 之后使用 HAVING。 Where 子句充当前置过滤器,而 Have 作为后置过滤器。