文章目录
- [力扣高频SQL 50题(基础版)第四十四题之626. 换座位](#力扣高频SQL 50题(基础版)第四十四题之626. 换座位)
- [626. 换座位](#626. 换座位)
力扣高频SQL 50题(基础版)第四十四题之626. 换座位
626. 换座位
题目说明
表: Seat
Plaintext
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| student | varchar |
+-------------+---------+
id 是该表的主键(唯一值)列。
该表的每一行都表示学生的姓名和 ID。
id 是一个连续的增量。
编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。
按 id
升序 返回结果表。
思路分析
- id%2=0 ,判断是否为偶数,为偶数则id-1(例如id=2时,id%2=0,则id-1后id为1)
- 从表中选择最大id,让其返回原值
- 否则,让id+1(奇数)
实现过程
准备数据
SQL
Create table If Not Exists Seat (id int, student varchar(255))
Truncate table Seat
insert into Seat (id, student) values ('1', 'Abbot')
insert into Seat (id, student) values ('2', 'Doris')
insert into Seat (id, student) values ('3', 'Emerson')
insert into Seat (id, student) values ('4', 'Green')
insert into Seat (id, student) values ('5', 'Jeames')
实现方式
SQL
select case
when id%2=0 then id-1
when id=(select max(id) from Seat) then id
else id+1
end
id,student from Seat
order by id;