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

SQL-每日一题【626.换座位】

题目

表: Seat

 

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

按 id 升序 返回结果表。

查询结果格式如下所示。

示例 1:

解题思路

前置知识

MySQL 的 MOD() 函数是取模运算的函数,它返回两个数相除的余数。其语法如下:

MOD(dividend, divisor)

其中,dividend 和 divisor 都是数值表达式,dividend 除以 divisor 并返回余数。

注意,如果除数为 0,则 MOD() 函数返回 NULL,而不会引发错误。

让我们一起来看一下这道题吧! 

1.题目要求我们交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。对于这个问题我们用case when 来解决。

2.首先我们用mod()找出为奇数的 id,并判断此 id 是否为最后一个,也就是用 count(*)计算出所有数据的个数,并与找出的 id 进行比较,若是最后一个则让它返回 id,不对其进行交换,若不是最后一个,则让id = id + 1。如果均不满足上述条件,那说明 id 为偶数,使 id = id -1,最后按id的升序降序排序即可。

代码实现

select (casewhen mod(id,2) = 1 and id = (select count(*)from seat) then idwhen mod(id,2) then id + 1else id - 1end) as id, student
from seat
order by id

测试结果

 

http://www.lryc.cn/news/103094.html

相关文章:

  • Swagger之Hello World !
  • VSCode SSH远程连接与删除
  • 面试典中典之线程池的七大参数
  • Maven如何创建Java web项目(纯干货版)!!!
  • linux进程间通信的方式及特点
  • 京东的成功秘诀:找到自己独特而有效的商业模式
  • 全局ip代理安全吗? 手机设置全局代理方法详解
  • Clion开发Stm32之温湿度传感器(DHT11)驱动编写
  • 位操作相关的函数(C++)
  • arm 函数栈回溯
  • 30个前端开发中常用的JavaScript函数
  • 基于量子同态加密的改进多方量子私有比较
  • 解决mysqld服务启动失败
  • 【前端知识】React 基础巩固(四十)——Navigate导航
  • 文件IO练习
  • 初识FreeRTOS入门,对FreeRTOS简介、任务调度、内存管理、通信机制以及IO操作,控制两个led不同频率闪烁
  • STM32CUBUMX配置FLASH(W25Q128)--保姆级教程
  • 【Golang 接口自动化04】 解析接口返回JSON串
  • EPPlus与Microsoft.Office.Interop.Excel的使用区别
  • ncrack工具使用说明
  • 第二章:进程管理(处理机/CPU管理)
  • MySQL中锁的简介——表级锁-元数据锁、意向锁
  • React几种避免子组件无效刷新的方案
  • 分享亿款好用的PDF编辑工具
  • AI生成式视频技术来临:Runway Gen-2文本生成视频
  • react钩子函数
  • RISC-V公测平台发布 · 如何在SG2042上玩转k3s
  • Linux系统常见小问题
  • WEB:mfw
  • 2.4 传统经验光照模型详解