力扣高频SQL 50题(基础版)第四十四题之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;

结果截图

相关推荐
IT枫斗者枫哥10 分钟前
MyBatis一对多分页:LIMIT 20,为什么凑不齐20个订单?
java·数据库
Y0016 分钟前
PostgreSQL 的锁:为什么你的 ALTER TABLE 会卡住,以及怎么查
数据库·postgresql
灰原喜欢柯南29 分钟前
OceanBase 运维管理知识点——OCP 监控、诊断与变更控制
数据库·oceanbase
码农-00430 分钟前
Springboot 集成 Ehcache操作数据库显示SQL语句设置
数据库·spring boot·sql
仍然.32 分钟前
Redis---事务
数据库·redis
oradh33 分钟前
Oracle 执行计划的阅读方法(二叉树结构来理解和阅读)
数据库·oracle·执行计划的阅读方法
SelectDB36 分钟前
Doris 向量检索上线踩坑记录:七个排查现场与可直接复制的命令
大数据·数据库·数据分析
数据库小学妹37 分钟前
MySQL深分页优化:LIMIT大偏移的根因分析与五种解法对比
数据库·mysql·性能优化
SelectDB38 分钟前
一条大查询把集群打挂之后:Apache Doris 稳定性处置与资源隔离速查
大数据·数据库·数据分析