MySQL写个case when的SQL
时间: 2024-07-17 16:00:57 浏览: 107
MySQL中的`CASE WHEN`语句是一个条件表达式,用于根据给定的条件执行不同的操作并返回结果。它的基本语法结构如下:
```sql
SELECT
CASE
WHEN condition_1 THEN result_1
[WHEN condition_2 THEN result_2]
[...]
ELSE default_result
END
FROM table_name;
```
这里,`condition_i`是你想要检查的每个条件,如果该条件为真(非NULL),对应的`result_i`就会被选择并返回。如果所有`WHEN`都不满足,则会执行`ELSE`部分定义的结果,如果没有`ELSE`,当没有匹配条件时,通常返回NULL。
例如,如果你想计算学生的成绩等级,你可以这样做:
```sql
SELECT
id,
case
when grade > 90 then 'A'
when grade BETWEEN 80 AND 90 then 'B'
when grade BETWEEN 70 AND 80 then 'C'
when grade BETWEEN 60 AND 70 then 'D'
else 'F'
end as letter_grade
FROM students;
```
这将根据学生成绩分配字母等级。
相关问题
mysql case when 拼接SQL
MySQL中的CASE WHEN语句是一种灵活的条件表达式,可以在查询中根据满足的条件返回不同的结果,同时可以将多个CASE WHEN语句进行拼接,实现更加复杂的查询需求。
拼接SQL的方式通常是将多个CASE WHEN语句通过UNION或者UNION ALL操作进行合并。例如,假设有以下两个表格:
表格1:orders
| order_id | customer_id | order_date | amount |
| -------- | ----------- | ----------| ------ |
| 1 | 100 | 2020-01-01 | 100 |
| 2 | 200 | 2020-03 | 300 |
表格2:customers
| customer_id | customer_name |
| ----------- | -------------|
| 100 | Alice |
| 200 | Bob |
| 300 | Carol |
我们想要查询每个顾客的总消费金额,以及顾客在orders表格中的订单数量。可以使用以下SQL语句进行拼接:
```
SELECT customer_name,
SUM(CASE WHEN orders.customer_id=customers.customer_id THEN orders.amount ELSE 0 END) AS total_spent,
COUNT(CASE WHEN orders.customer_id=customers.customer_id THEN orders.order_id ELSE NULL END) AS num_orders
FROM orders
JOIN customers ON orders.customer_id=customers.customer_id
GROUP BY customer_name
```
在上面的SQL语句中,首先通过JOIN操作将两个表格连接起来,然后使用CASE WHEN语句分别计算每个顾客的总消费金额和订单数量,并通过SUM和COUNT函数进行统计。最后使用GROUP BY语句按照顾客名称进行分组。
mysql sql的case when 写法
MySQL SQL中的CASE WHEN语句是一种条件表达式,它可以根据条件返回不同的值。CASE WHEN语句有两种写法,一种是当字段值为枚举类型时,另一种是当字段值不是枚举类型时,而是根据一定的条件进行处理。下面分别介绍这两种写法:
1. 当字段值为枚举类型时,CASE WHEN语句的写法如下:
CASE 字段名
WHEN 枚举值1 THEN 返回值1
WHEN 枚举值2 THEN 返回值2
...
ELSE 返回值n
END
例如,当我们有一个性别字段sex,其中0表示男性,1表示女性,2表示未知,我们可以使用以下语句将其转换为中文:
SELECT CASE sex
WHEN 0 THEN '男'
WHEN 1 THEN '女'
ELSE '未知'
END AS '性别'
FROM user;
2. 当字段值不是枚举类型时,而是根据一定的条件进行处理时,CASE WHEN语句的写法如下:
CASE
WHEN 条件1 THEN 返回值1
WHEN 条件2 THEN 返回值2
...
ELSE 返回值n
END
例如,当我们有一个学生成绩表score_info,其中score字段表示学生成绩,我们可以使用以下语句将其转换为成绩等级:
SELECT student_name, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS '成绩等级'
FROM score_info;