题目链接:LeetCode 626. 换座位
题目描述
表名:Seat
编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。
按 id 升序 返回结果表。
查询结果格式如下所示。
示例1:
题目分析
如果是偶数行,前移一行。
如果是奇数行,后移一行,如果是最后一行(id = count(1))则原地不动。
代码
SELECT (CASE
-- 如果是奇数且是最后一位,则ID不动
WHEN MOD(id, 2) = 1 AND id = (SELECT COUNT(*) FROM seat) THEN id
-- 如果是奇数,id+1
WHEN MOD(id, 2) = 1 THEN id + 1
-- 如果是偶数,id-1
ElSE id - 1
-- 结束,起别名
END) AS id,
student
FROM seat
-- 按ID升序排列
ORDER BY id;