mysql中条件查询可以使用where子句、case…when子句以及having关键字,简要说明其用法区别?
时间: 2024-11-22 16:37:17 浏览: 19
在MySQL中,`WHERE`, `CASE...WHEN` 和 `HAVING` 都是用来过滤数据,但它们应用的场景各有不同:
1. **WHERE**:这是最基础的筛选条件,应用于 `SELECT` 语句,对行级的数据进行条件判断。例如:
```sql
SELECT * FROM table WHERE column = 'some_value';
```
这将只返回表中 `column` 列值等于 `'some_value'` 的行。
2. **CASE...WHEN**:这是一个条件表达式,用于根据特定条件返回不同的值,常用于更复杂的逻辑判断。例如:
```sql
SELECT case when column > 10 THEN '大于10' ELSE '不大于10' END FROM table;
```
根据 `column` 的值,此查询会返回相应的文字描述。
3. **HAVING**:与 `WHERE` 类似,但是 `HAVING` 适用于聚合函数之后的结果。比如,如果想基于分组后的数据进行筛选,就不能在 `WHERE` 后面使用,而应放在 `GROUP BY` 之后,如:
```sql
SELECT group_column, COUNT(*) FROM table GROUP BY group_column HAVING COUNT(*) > 5;
```
这将返回每个 `group_column` 分组中拥有超过5条记录的组。
总结起来,`WHERE` 用于行级别的条件过滤,`CASE...WHEN` 用于复杂的条件判断并返回新的值,而 `HAVING` 则是在聚合操作后进行的更高层次的筛选。
阅读全文