mysql的 if else , case when then, IFNULL
发布日期:2025-04-18 06:12:48
浏览次数:19
分类:精选文章
本文共 1224 字,大约阅读时间需要 4 分钟。
数据库表结构与 SQL 查询优化
表结构概述
数据库表 score 的结构如下:
CREATE TABLE `score` ( `s_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `c_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `s_score` int(3) NULL DEFAULT NULL, PRIMARY KEY (`s_id`, `c_id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
表中记录了学生 (s_id) 与课程 (c_id) 的评分情况,s_score 为评分值,PRIMARY KEY 为联合主键,使用 InnoDB 引擎。
数据库查询优化
一、条件判断:IF ELSE
可以通过 SQL 中的 IF ELSE 语句根据评分值判断等级:
SELECT s_id, s_score, -- 可以不用查询,下面的 IF ELSE 也能用 (s_score > 80, '优秀', '良好') AS 等级FROM score;
s_score > 80时返回 '优秀';否则返回 '良好'。
二、条件判断:CASE WHEN THEN
另一种判断方法是使用 CASE WHEN THEN:
SELECT s_id, s_score, -- 可以不用写,下面也能用 (CASE WHEN s_score >= 100 THEN '优秀' WHEN s_score >= 80 THEN '良好' WHEN s_score >= 60 THEN '中等' ELSE '良好' END) AS 等级FROM score;
- 当
s_score >= 100时等级为 '优秀'; - 当
s_score >= 80但小于 100 时等级为 '良好'; - 当
s_score >= 60但小于 80 时等级为 '中等'; - 其他情况等级为 '良好'。
三、处理空值:IFNULL
可以使用 IFNULL 函数处理空值:
SELECT s_id, IFNULL(s_score, '没有成绩') AS scoreFROM score;
- 当
s_score不为空时,返回评分值; - 当
s_score为空时,返回 '没有成绩'。
通过以上方法,可以根据需求对评分结果进行分类和处理,提升数据库查询效率。
发表评论
最新留言
感谢大佬
[***.8.128.20]2026年06月05日 12时02分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!