CASE WHEN condition THEN result
WHEN condition THEN result
.............
[WHEN ...]
[ELSE result]
END
CASE 子句可以用于任何表达式可以有效存在的地方。 condition 是一个返回boolean 的表达式。 如果结果为真,那么 CASE 表达式的结果就是符合条件的 result。 如果结果为假,那么以相同方式搜寻任何随后的 WHEN 子句。 如果没有 WHEN condition 为真,那么 case 表达式的结果就是在 ELSE 子句里的值。 如果省略了 ELSE 子句而且没有匹配的条件, 结果为 NULL。
例子:
学生表
成绩表:
查询每个学生的成绩,并展示学生的id,学生姓名,语文,数学,英语
SELECT a.id,a.name, (case WHEN b.kemu = '数学' THEN score ELSE 0 END) as 数学, (case WHEN b.kemu = '语文' THEN score ELSE 0 END) as 语文, (case WHEN b.kemu = '英语' THEN score ELSE 0 END) as 英语 FROM student a,grade b WHERE a.id = b.id
结果: