关于My SQL 的 CASE 语句(男生用1代替 ,女士用0代替)

My SQL 语句 CASE 语句

假如我有两个数据表 一个为 Students (学生信息表) 另一个为 Student_Score(学生成绩表)

Students(学生表)

#学生表
	CREATE TABLE Students (
	Id INT PRIMARY KEY auto_increment,			#主键ID
	SId INT NOT NULL,							#学号
	SName VARCHAR(10) NOT NULL,					#姓名
	Sex INT NOT NULL,							#性别:1:男 ,0:女
	SAddress VARCHAR(100) NOT NULL,				#住址
	Flag int NOT NULL							#状态:1:有效 , 0:无效
	);
Student_Score(学生成绩表)

 

 

 

 

 

 

#成绩表
CREATE TABLE Sudent_Score (
	Id INT PRIMARY KEY AUTO_INCREMENT,   #主键ID
	CId  INT NOT NULL,                   #学号
	Chinese INT NOT NULL,                #语文成绩
	Math INT NOT NULL,                   #数学成绩
	English INT NOT NULL,                #英语成绩
	IsTrue INT NOT NULL,                 #是否有效 :1:有效 , 0:无效
	Flag INT                             #状态:1:有效 , 0 :无效
	
) 

 我们可以看到,我们的性别和成绩是否有效还有Flag都使用的int 1和 0 代替,此时如果我们想查询所有学生的学号,姓名,性别,各科成绩以及总分,并且从大到小排序应该怎么写呢?

       我们可以使用My SQL 的CASE语句来完成

        

CASE case_value
	WHEN when_value THEN
		statement_list
	ELSE
		statement_list
END CASE;

这是默认的CASE语句,那我们行该如何使用呢?

SELECT
	s.SId '学号',
	s.SName '姓名',
CASE  s.Sex                 #CASE后面跟要判断的列名
		WHEN '1' THEN       #条件1
			'男'            #结果1
		WHEN '0' THEN       #条件2
			 '女'           #结果2
        ELSE
            '未知'          #else除了全部的条件其他的选项的结果
END AS '性别'  ,            #AS后跟这个字段的别名
 
	s.SAddress '地址',
	c.Chinese '语文',
	c.Math '数学',
	c.English '英语',
	CASE  c.IsTrue 
		WHEN '1' THEN
			'有效'
		WHEN '0' THEN
			 '无效'
END AS '是否有效'  ,
	(c.Chinese + c.Math + c.English)  '总分'
FROM
	students s,
	Sudent_Score c
WHERE
	SId = CId
	ORDER BY
	(c.Chinese + c.Math + c.English)
	DESC ;
	
	

运行结果

 

我们可以看到性别和是否有效这两个字段都该成了我们想要的结果.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值