SQL学习(9):函数和条件-直接使用还是子查询

SQL学习(9):函数和条件-直接使用还是子查询

题目来源:力扣626换座位

1.题目描述

Seat表包括id和student,现在要求从1开始交换连续两个学生的位次,如果最后一位学生位次为奇数则保持不变

2.问题分析

1.完整代码
select 
	(case when mod(id,1)=0 then id-1
		  when mod(id,1)=1 and id=(select count(*) from Seat) then id
		  else id+1) as id, student
from Seat
2.注意事项及知识点

函数作为条件成分时是能够直接使用还是需要子查询?

答案是:函数的使用都需要和from结合。from只能对应同层函数,无法跨层对应。

从理解层面来看,我们认知中的直接使用实际上形如 select * from Seat when count(*)=1,此时只有一层,此处from对应count()函数,因此不需要子查询。
而当函数作为内层条件时,外层from只能作用于外层,内层需要再使用一层from。
比如

select 
	(case when 
		A=(select max(A) from tb) then 1 
	 else 0 end) as case 
from tb

此时case when内部的max不能对应外层from,需要再使用一个from

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值