力扣高频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;

结果截图

相关推荐
Lx3523 分钟前
覆盖索引:减少回表查询的关键技巧
后端·sql·mysql
hqxstudying5 分钟前
JAVA面试题
java·jvm·数据库·redis·mysql·oracle
AllWe$10 分钟前
十一、MySQL 事务底层与高可用原理
数据库·mysql
珹洺26 分钟前
MyBatis实战指南(七)MyBatis缓存机制
java·数据库·sql·安全·缓存·oracle·mybatis
未来之窗软件服务33 分钟前
thinkphp 一个系统在同一个域名下,一个文件夹下如何区分多站点——穷人的精致规划——仙盟创梦IDE
服务器·网络·数据库·仙盟创梦ide·东方仙盟·东方仙盟精致规划
亭台烟雨中43 分钟前
简单实现shardingSphere + MybatisPlus分库分表2025
java·数据库·分库分表
URBBRGROUN4671 小时前
邮件限流器
java·前端·数据库
OKUNP1 小时前
PostgreSQL日常维护
数据库·postgresql
斯普信专业组1 小时前
Etcd数据持久化机制:WAL与Snapshot解析
java·数据库·etcd
IpdataCloud2 小时前
手机号段数据库与网络安全应用
数据库·web安全·oracle·手机号码查询·手机号段识别