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)






评论(0)


暂无数据
推荐帖子
0条评论
1条评论
0条评论