LC 速查

SQL 50索引 › A6 Subqueries 子查询

LC 626换座位Exchange Seats 中等

Seat 表按 id 连续编号记录学生座位;交换每对相邻座位(1 换 2、3 换 4),若总人数为奇数最后一个不动,要求用 UPDATE 完成。

思路 UPDATE + MOD(id,2) 分类,CASE 对非末尾奇数 +1、偶数 -1。

UPDATE Seat
SET id = CASE
  WHEN MOD(id, 2) = 1
       AND id < (SELECT mx
                 FROM (SELECT MAX(id) AS mx
                       FROM Seat) T)
  THEN id + 1
  WHEN MOD(id, 2) = 0 THEN id - 1
  ELSE id
END;

数据表:Seat · 关键字:交换每对相邻座位(1 换 2、3 换 4),若总人数为奇数最后一个不动,要求用 UPDATE 完成

← 上一题 上级经理已离职的公司员工电影评分 下一题 →