温州建设小学的网站,加强网站安全建设,东台做淘宝网站,房屋装修效果图大全大家好#xff0c;我是空空star#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目#xff1a;626. 换座位二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结前言 … 大家好我是空空star本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目626. 换座位二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结前言 一、题目626. 换座位
表: Seat
----------------------
| Column Name | Type |
----------------------
| id | int |
| name | varchar |
----------------------
Id是该表的主键列。
该表的每一行都表示学生的姓名和ID。
Id是一个连续的增量。
编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数则最后一个学生的id不交换。
按 id 升序 返回结果表。
查询结果格式如下所示。
输入:
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 |
-------------
解释: 请注意如果学生人数为奇数则不需要更换最后一名学生的座位。
二、解题
1.正确示范①
提交SQL
select
case when idnum and mod(num,2)1 then id
when mod(id,2)0 then id-1 else id1 end id,
student
from Seat u1,
(select count(1) num from Seat) u2
order by id;运行结果 2.正确示范②
提交SQL
select
case when idnum and mod(num,2)1 then id
when mod(id,2)0 then id-1 else id1 end id,
student
from Seat u1,
(select max(id) num from Seat) u2
order by id;运行结果 3.正确示范③
提交SQL
select
case when idnum and mod(num,2)1 then id
when mod(id,2)0 then id-1 else id1 end id,
student
from Seat u1,
(select id as num from Seat order by id desc limit 1) u2
order by id;运行结果 4.正确示范④
提交SQL
select
if(idnum and mod(num,2)1,id,if(mod(id,2)0,id-1,id1)) id,
student
from Seat u1,
(select id as num from Seat order by id desc limit 1) u2
order by id;运行结果 5.其他 总结 正确示范①思路 先计算出总的座位数 select count(1) num from Seat 当座位号是最后一个并且是奇数数座位号不变 当座位号是偶数时把座位号-1否则座位号1 case when idnum and mod(num,2)1 then id when mod(id,2)0 then id-1 else id1 end id 正确示范②思路 先计算出总的座位数因为题目说了座位号是连续增量所以可以通过最大座位号来获取总座位数 select max(id) num from Seat 之后交换规则跟思路①一样 正确示范③思路 先计算出总的座位数因为题目说了座位号是连续增量所以可以按照座位号降序取第一个来获取总座位数 select id as num from Seat order by id desc limit 1 之后交换规则跟思路①一样 正确示范④思路 把思路①中的case when用法转换为if语法 if(idnum and mod(num,2)1,id,if(mod(id,2)0,id-1,id1)) id