热线电话:13121318867

登录
2020-06-17 阅读量: 869
MySQL面试题:换座位

题目描述:有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。

其中纵列的 id 是连续递增的

想改变相邻俩学生的座位,写一段sql代码实现

解题思路:只有一张表,想要改变表的内容,这就需要进行自连接,然后判断id的奇偶性,如果是奇数,则返回id+1的姓名,如果id是偶数,则返回id-1的姓名

代码:

select a.id,ifnull(b.name,a.name) as student from seat as a

left join seat as b

on (a.id%2=1 and a.id=b.id-1) or (a.id%2=0 and a.id=b.id+1)

order by a.id;

下面是两个表连接后的结果,所以需要用到ifnull函数,如果b.id是null,就返回a.name

最后的执行结果:

来源:力扣(LeetCode)

18.0045
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子