📅  最后修改于: 2023-12-03 14:48:27.123000             🧑  作者: Mango
在SQL中,WHERE和HAVING子句都用于筛选数据,但是它们之间有一些关键的区别。在本文中,我们将深入研究这两个子句的区别以及它们的使用场景。
WHERE用于在SELECT语句中筛选行。它用于过滤基于列值的特定行,并且只返回符合条件的行。
SELECT column1, column2, ...
FROM table_name
WHERE condition;
假设我们有一个名为students
的表,其中包含学生的ID、姓名和成绩。下面是一个示例查询,它使用WHERE子句来检索所有成绩大于等于60分的学生记录:
SELECT * FROM students
WHERE score >= 60;
HAVING用于在GROUP BY子句中筛选列。它用于过滤基于聚合函数计算出的结果集并只返回符合条件的记录。
SELECT column1, column2, ...
FROM table_name
GROUP BY column1, column2, ...
HAVING condition;
假设我们有一个名为students
的表,其中包含学生的ID、姓名和成绩。下面是一个示例查询,它使用HAVING子句来检索所有成绩平均分大于等于60分的学生记录:
SELECT AVG(score) AS avg_score
FROM students
GROUP BY student_name
HAVING avg_score >= 60;
下面是WHERE和HAVING子句之间的主要区别:
WHERE和HAVING子句虽然都可以用于筛选数据,但是它们之间有很大的区别。WHERE用于过滤行,而HAVING用于过滤组。在使用GROUP BY子句时,WHERE和HAVING子句的位置也需要注意。