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 为空时,返回 '没有成绩'。

通过以上方法,可以根据需求对评分结果进行分类和处理,提升数据库查询效率。

上一篇:MySQL的10种常用数据类型
下一篇:MySQL的 DDL和DML和DQL的基本语法

发表评论

最新留言

感谢大佬
[***.8.128.20]2026年06月05日 12时02分17秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章