您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页mysql数据库中case...when...then...end语句的使用

mysql数据库中case...when...then...end语句的使用

来源:爱玩科技网

有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格

表结构:

/*
Navicat MySQL Data Transfer

Source Server         : local
Source Server Version : 50527
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50527
File Encoding         : 65001

Date: 2017-10-18 10:59:33
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `id` int(11) NOT NULL,
  `chinese` double(11,0) DEFAULT NULL,
  `english` double(11,0) DEFAULT NULL,
  `math` double(11,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('1', '100', '60', '50');
INSERT INTO `score` VALUES ('2', '50', '40', '80');

sql语句case…when…then…end:
注意不要忘记end这个关键字,否则会报错;

SELECT
    s.id,
    (
        CASE
        WHEN s.chinese >= 80 THEN
            '优秀'
        WHEN s.chinese >= 60 THEN
            '及格'
        ELSE
            '不及格'
        END
    ) AS '语文',
    (
        CASE
        WHEN s.math >= 80 THEN
            '优秀'
        WHEN s.math >= 60 THEN
            '及格'
        ELSE
            '不及格'
        END
    ) AS '数学',
    (
        CASE
        WHEN s.english >= 80 THEN
            '优秀'
        WHEN s.english >= 60 THEN
            '及格'
        ELSE
            '不及格'
        END
    ) AS '英语'
FROM
    score s

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务