3、条件查询可以使用where子句、case…when子句以及having关键字,简要说明其用法区别?
时间: 2024-11-22 08:35:17 浏览: 18
在 SQL 中,`WHERE`, `CASE...WHEN` 和 `HAVING` 子句都是用于过滤数据库查询结果的重要部分,各有其特定用途:
1. **WHERE** 子句:这是最基本的条件筛选语句,用于基于列的值确定哪些行应该出现在查询结果中。它应用于 SELECT 语句的主表上,对每一行进行检查,只返回满足给定条件的行。例如:
```
SELECT * FROM table_name WHERE column_name = 'some_value';
```
2. **CASE...WHEN** 子句:这是一种条件表达式,用于根据条件返回不同的值。它主要用于计算列的值,而不是直接筛选行。比如,你可以创建一个新的列,根据原列的不同值返回不同的结果:
```
SELECT column_name,
CASE WHEN condition THEN 'result1' ELSE 'result2' END AS new_column
FROM table_name;
```
3. **HAVING** 子句:不同于 WHERE,HAVING 用于对 GROUP BY 分组后的数据进行过滤。这意味着它只能应用在聚合函数(如 SUM, COUNT, AVG 等)之后的结果上,因为只有聚合后的数据才有分组的概念。例如:
```
SELECT column1, COUNT(*) as count
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 5;
```
这里会返回每个 `column1` 值分组后,计数大于5的记录。
总结来说,WHERE 用于单行级别的筛选,CASE...WHEN 主要用于列级计算,而 HAVING 用于对分组后的数据进行条件筛选。
阅读全文