MySQL SELECT语句实现条件逻辑

在一家公司面试,遇到了要在SELECT语句实现条件逻辑的问题,当时回答得不是很好一直挂念着,所以把这个功能梳理下。

题目简化

字段
studentid,name
courseid,name
scoresid,stud_name,cour_name,score
目标表学生名,课程名,是否及格

 使用学生表、课程表和分数表,检索结果显示学生名、课程名和是否及格。

所以需要实现条件逻辑判断是否及格,有如下几种实现方式:

1. CASE WHEN ... THEN ...实现条件语句,格式如下

CASE 

        WHEN expression THEN return_value1

        WHEN expression THEN return_value2

        ELSE default_return_value

END

所以实现功能的SQL如下

SELECT student.name, course.name, (
	CASE 
		WHEN scores.score<60 THEN '不及格'
		ELSE '及格'
	END
) AS pass
FROM student, course, scores
WHERE student.id=scores.stud_id AND course.id=scores.cour_id;

2. IF函数实现条件语句,格式如下

IF(条件表达式, 为真返回值, 为假返回值)

所以实现功能的SQL如下

SELECT student.name, course.name, IF(scores.score < 60, '不及格', '及格') AS pass
FROM student, course, scores
WHERE student.id=scores.stud_id AND course.id=scores.cour_id;

 还要其他的能实现条件语句的功能,但是不适合实现上面SQL功能的,也列举一下

1.CASE column实现单个字段的值的枚举,格式如下

CASE column

        WHEN value1THEN return_value1

        WHEN value2 THEN return_value2

        ELSE default_return_value

END

2.字符串的集合操作ELT()

ELT(N,str1,str2,str3,...)

 如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值