LeetCode 换座位

发布于 2024-12-22 09:51:12 字数 1014 浏览 17 评论 0

小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。

其中纵列的 id 是连续递增的 小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?

+---------+---------+
|  id   | student |
+---------+---------+
|  1  | Abbot   |
|  2  | Doris   |
|  3  | Emerson |
|  4  | Green   |
|  5  | Jeames  |
+---------+---------+

假如数据输入的是上表,则输出结果如下:

+---------+---------+
|  id   | student |
+---------+---------+
|  1  | Doris   |
|  2  | Abbot   |
|  3  | Green   |
|  4  | Emerson |
|  5  | Jeames  |
+---------+---------+

注意:如果学生人数是奇数,则不需要改变最后一个同学的座位。

先把简单的偶数都-1;然后对于非最大的奇数 id+1;最后(即 else) 如果存在未变化的数则值不变

select
  case                       # 如果
  when id%2=0 then id-1      # id%2 为偶数 则返回 id-1 
  when id<(select max(id) from seat) then id+1   # 如果表中最大的 ID 小于当前返回的 ID 则执行 id+1 也就是取最大 ID
  else id                    # 如果存在未变化的数则值不变
  end as id,student from seat  order by  id

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

还如梦归

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文