mysql資料庫中case...when...then...end語句的使用
阿新 • • 發佈:2019-02-19
有一張表,裡面有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