「数据库」sql刷题(No.6)

喜欢就 关注 我们吧!

简介: 

Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。

感谢微信给予的个人认证,专注于PHP、数据库技术领域知识经验分享。

技术的交流、不仅仅限制于阅读,因此我特地创建了一个「红包激励机制」的 sql 刷题群,红包激励机制内容,我将以图片形式放在文章底部(欧力给)。

前四篇有 90+ 的伙伴在评论区打卡留言,参与红包激励制的 sql刷题学习。 

题目一:

小毛是一所中学的音乐老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的

问题来了,小毛想改变相邻俩学生的座位。欢迎大家用 SQL  帮助解答。

例如下图:

「数据库」sql刷题(No.6)_第1张图片

解答方法:

这里给大家提供 1 种解答方式 ,非常骚操作~~~(以下解答方式,已经过测试

第一种:

使用 CASE 和 MOD 的方式

  SELECT
      (CASE
          WHEN MOD(id, 2) != 0 AND counts != id THEN id + 1
          WHEN MOD(id, 2) != 0 AND counts = id THEN id
          ELSE id - 1
      END) AS id,
      student
  FROM
      seat,
      (SELECT
          COUNT(*) AS counts
      FROM
          seat) AS seat_counts
  ORDER BY id ASC;

注意:MOD(x,y)返回 x%y 的余数

思路:对于所有座位 id 是奇数的学生,修改其 id 为 id+1,如果最后一个座位 id 也是奇数,则最后一个座位 id 不修改。对于所有座位 id 是偶数的学生,修改其 id 为 id-1。

上述输出如下:

「数据库」sql刷题(No.6)_第2张图片

结尾总结:

这 1 道题类型评定:中等类型 。主要就是利用 CASE 与 MOD 方式去搜索找到.

大家一定要换种思路去思考哈,可以自己尝试练习玩玩~~~

恭喜你、打卡成功一天,记得留言区评论:打卡+ x 天(x代表你打卡次数);

机器人会统计打卡次数,每周公布一次打卡数据。

往下拉,红包机制内容

和我再战 n+1 天

同时,为了方便大家学习,我会把一些源码、技术干货存储到 github 中,随时可以在微信群 进行交流,扫下面二维码 ,备注 “技术进群” 就可以通过审核。

进群的小伙伴请加右侧私人微信(备注:技术进群)

----投稿分隔线----

投稿,关注公众号回复“投稿”,专员对接

-----商务合作分隔线----

商务合作,关注公众号回复“商务合作”,

你可能感兴趣的:(「数据库」sql刷题(No.6))