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;