数据库条件查询可以使用where子句、case…when子句以及having关键字,简要说明其用法区别?
时间: 2024-11-24 09:41:05 浏览: 9
限制选择的行-orocle数据库基础
数据库条件查询中,`WHERE`, `CASE...WHEN` 和 `HAVING` 都用于过滤数据,但它们的应用场景和作用略有不同:
1. **WHERE** 子句:通常用于基础的行级筛选,它在FROM子句之后,用于指定哪些记录应该包含在结果集中。它基于列值进行判断,可以匹配特定的值、范围、运算符等,例如 `SELECT * FROM table WHERE column = 'value'`。
2. **CASE...WHEN** 子句:这是一个条件表达式,用于对单个字段进行更复杂的条件测试并返回不同的值。它会检查每个 WHEN 子句的条件是否满足,并根据第一个满足的条件返回对应的 THEN 结果。如果所有 WHEN 都不满足,则可以选择一个 ELSE 或 DEFAULT 分支。例如:
```
SELECT column,
CASE
WHEN condition THEN 'Result1'
WHEN condition2 THEN 'Result2'
ELSE 'Default Result'
END as new_column
FROM table
```
3. **HAVING** 子句:主要用于聚合函数(如 COUNT(), SUM(), AVG() 等)的结果上,与 GROUP BY 一起使用。当你需要基于分组后的数据进行过滤时,才使用 HAVING,比如找出销售额大于某个值的产品组。示例:
```
SELECT product_group, SUM(sales) as total_sales
FROM sales_table
GROUP BY product_group
HAVING total_sales > 10000
```
阅读全文