当前位置: 首页 > news >正文

面试题--【SQL篇】--换座位

今天一个朋友发来这样一道题。这是他面试时的其中一道,是当时考虑了很久也没完成,最后不得不放弃。

那我们就来看一下,题目描述如下,必须要求用sql完成;

表: Seat+-------------+---------+|ColumnName|Type|+-------------+---------+|id|int||student|varchar|+-------------+---------+

id 是该表的主键(唯一值)列。
该表的每一行都表示学生的姓名和 ID。
ID 序列始终从 1 开始并连续增加。

编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的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|+----+---------+解释: 请注意,如果学生人数为奇数,则不需要更换最后一名学生的座位。

看到这个题当时的思路是:根据 ID 的奇偶性调整学生对应的 ID,奇数 ID 与下一个偶数 ID 交换,最后一个奇数 ID 保持不变,且结果按 ID 升序返回。

核心思路
1、判断 ID 奇偶性:
偶数 ID:交换后对应 ID-1;
奇数 ID:若不是最后一个 ID,交换后对应 ID+1;若是最后一个 ID,保持不变。
2、关联原表:
通过调整后的 ID 关联原表,获取交换后的学生姓名,最终按原 ID 升序返回。
完整 SQL 实现

SELECTt.id,-- 根据调整后的 target_id 匹配原表的学生姓名(SELECTs.studentFROMSeat sWHEREs.id=t.target_id)ASstudentFROM(-- 第一步:生成每个 ID 对应的目标交换 IDSELECTid,CASE-- 偶数 ID:交换到前一个 IDWHENMOD(id,2)=0THENid-1-- 奇数 ID:如果是最后一个 ID 则不变,否则交换到后一个 IDWHENid=(SELECTMAX(id)FROMSeat)THENidELSEid+1ENDAStarget_idFROMSeat)t-- 按原 ID 升序返回ORDERBYt.id;

后来我也上网查了下,发现了一个更牛逼的思路,分享给大家:

他的思路是:将偶数 id 减 2 后重排即可
核心代码如下:
MYSQL:
select rank() over(order by if(id % 2 = 0,id-2,id)) as id ,student from seat

这思路确实:惊为天人!
不知道你看到有更好的思路,欢迎分享;

http://www.jsqmd.com/news/421540/

相关文章:

  • 一文讲透|千笔,碾压级的AI论文工具
  • 2026年可靠的满月宝宝礼物,婴儿礼盒,新生儿礼盒品牌专业服务推荐榜 - 品牌鉴赏师
  • 2026年 移动献血屋厂家推荐排行榜:智能装配式、民国风、方舱式、钢结构户外便民献血屋,创新设计与暖心服务深度解析 - 品牌企业推荐师(官方)
  • 香港留学优质选择:十大香港留学中介口碑之选 - 博客湾
  • ProfiNet转DeviceNet智能网关破解仓储设备S7-1214C PLC与编码器协议兼容核心瓶颈
  • 2026年Q1物流运输/货运代理/仓储服务/包装服务公司综合评测与选型指南 - 2026年企业推荐榜
  • 2026年 阿克苏工业漆厂家推荐排行榜:富锌底漆、环氧云铁中间漆、改性环氧树脂漆,专业防护与长效耐腐解决方案 - 品牌企业推荐师(官方)
  • 防水防尘设计需要注意的事项
  • PBR
  • 从0-1用三个月快速入门CTF比赛,计算机大学生最强落地指南(建议收藏)_CTF夺旗赛
  • 强烈安利!专科生必备的降AI工具 —— 千笔
  • 精准测量,赋能创新:2026年表面张力仪品牌深度盘点与采购指南 - 品牌推荐大师1
  • 2026年2月环境监测/职业卫生检测/安全生产标准化/节能评估报告/环保工程施工与设计服务商推荐哪家 - 2026年企业推荐榜
  • [特殊字符] OpenClaw 搭建全流程(保姆级)
  • 天虹购物卡回收实用方法详解,正规渠道与安全操作步骤全梳理 - 京回收小程序
  • 全网热议!2026年可靠的挡烟垂壁品牌推荐:无机布与玻璃挡烟垂壁谁更胜一筹? - 睿易优选
  • 2026年 包装机厂家推荐排行榜:灯泡/球泡/筒灯/T泡/A泡/药品/食品/化妆品/热收缩/自动/泡罩/三维/真空/封口/套袋等全品类包装设备实力解析 - 品牌企业推荐师(官方)
  • 参考文献崩了?AI论文写作软件,千笔·专业学术智能体 VS 灵感风暴AI
  • 第一天学Python
  • 2026年靠谱的种子丸粒化机,大田作物丸粒化,种子低温除湿烘干机丸粒化机厂家选购参考指南 - 品牌鉴赏师
  • OceanBase数据库查看表DDL记录
  • 软硬协同:AirRC522_1000方案实现RFID功能的无缝对接
  • 第二天学Python
  • 2026金华义乌膜结构工程服务商TOP4权威评测:空间结构系统解决方案优选指南 - 呼呼拉呼
  • 2026ZSM-35分子筛企业推荐:ZSM-5分子筛/beta沸石催化剂/钛硅分子筛/mor分子筛企业精选。 - 品牌推荐官
  • 高性价比颗粒物/粮库/在线粉尘监测系统怎么选?2026年最新推荐与品牌对比 - 品牌推荐大师1
  • 腾麒科技|搭贝零代码重构应收账款管理,坏账率降 90% - 搭贝
  • Gin 框架中的规范响应格式设计与实现(十二)
  • 2026年AI训练素材及数据集服务商精选:卓特视觉的合规与专业之道 - 品牌2026
  • Ai 环境搭建(基础工具安装与配置5)