1. 程式人生 > >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