随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

力扣626(MySQL)-换座位(中等)

题目:

表: Seat

编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。

按 id 升序 返回结果表。

查询结果格式如下所示。

示例1:

 

解释:

请注意,如果学生人数为奇数,则不需要更换最后一名学生的座位。

解题思路:

①交换座位号是交换相邻同学的id,如果原来座位号id是奇数,换座位后id就是偶数,如果原来座位号id是偶数,换座位后id就是奇数;

②利用count(*)计算出一共有多少个学生,利用SQL中求余函数mod(n,m),返回n除以m的余数,以此来判断座位id是奇数还是偶数,如果id是奇数且id != count,那么就将id+1;如果id是奇数且id = count,那么id就是最后一个奇数不能交换,id不变;其他情况:id为偶数,那么id - 1;

③对结果进行id 升序排序。

复制代码
 1 select 
 2      (case 
 3      when mod(id, 2) = 1 and id != cout then id + 1
 4      when mod(id, 2) = 1 and id  = cout then id
 5      else id - 1 end) as id,student
 6 from 
 7     seat_626,
 8         (
 9      select count(*) as cout
10      from seat_626
11     ) as temp
12 order by id;
复制代码

posted on   我不想一直当菜鸟  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-04-06 力扣448(java)-找到数组中所有消失的数(简单)
2022-04-06 力扣697(java)-数组的度(简单)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示