`HAVING` 和 `WHERE` 是 SQL 中用于筛选数据的关键字,它们有着明显的区别:
1. `WHERE`:
`WHERE` 关键字用于在检索数据时对行进行筛选。
`WHERE` 在执行 `SELECT` 查询时,作用于原始数据行,用于过滤行,只有满足条件的行才会被返回。
通常用于对表中的列进行条件过滤,比如 `SELECT * FROM table_name WHERE column_name = value`。
2. `HAVING`:
`HAVING` 关键字用于在对查询结果进行分组后,对分组的结果进行筛选。
`HAVING` 在执行 `GROUP BY` 分组查询时使用,作用于分组后的结果,用于过滤分组。
通常用于在使用聚合函数(如 `COUNT`、`SUM`、`AVG` 等)对数据进行分组后,对分组结果进行条件过滤,比如 `SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > 10`。
基本区别在于:
`WHERE` 在原始数据行上进行筛选,用于过滤行。
`HAVING` 在分组数据上进行筛选,用于过滤分组。
一般来说,`WHERE` 在进行数据检索时使用,用于过滤行;而 `HAVING` 在进行分组聚合后对分组结果进行筛选。