1、题目描述
表: Seat
±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
±------------±--------+
Id是该表的主键列。
该表的每一行都表示学生的姓名和ID。
Id是一个连续的增量。
编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。
按 id 升序 返回结果表。
查询结果格式如下所示。
示例 1:
输入:
Seat 表:
±—±--------+
| id | student |
±—±--------+
| 1 | Abbot |
| 2 | Doris |
| 3 | Emerson |
| 4 | Green |
| 5 | Jeames |
±—±--------+
输出:
±—±--------+
| id | student |
±—±--------+
| 1 | Doris |
| 2 | Abbot |
| 3 | Green |
| 4 | Emerson |
| 5 | Jeames |
±—±--------+
解释:
请注意,如果学生人数为奇数,则不需要更换最后一名学生的座位。
2、解题思路
还是老方法,先从提取要求,说是交换两个连续的学生座位号
而不是任意两个连续座位号,看输出内容实际交换是两个为一组进行的。
做这道,如果按照惯性思维是会先考虑调换student列内容,写起来会很复杂。
但是所谓调换student,相对的id列也是被调换的,那我们其实可以去调换id列去实现交换作为

该博客介绍了如何使用SQL查询来交换学生座位号。题目要求交换每两个连续学生的座位,对于奇数个学生的情况,最后一个学生座位不变。提供的解决方案是通过操作id列实现座位号的交换,通过对id取模判断其奇偶性,并根据条件调整id值,从而达到交换座位的效果。
最低0.47元/天 解锁文章
714





