改变学生座位,原理就是左右互换,最后落单的不变,在题解区看到的非常好的思路,用IF或者CASE WHEN都可以解决,这里写出IF的解法。
SELECT IF(id % 2 = 0, id-1, -- 偶数座位就往前一个
IF(id = (SELECT COUNT(DISTINCT id) FROM seat), id,
-- 除此之外最后一个不变,这里已经排除偶数的可能性,只能是奇数
id+1)) -- 剩下都是奇数座位了,往后一个
AS id,
student
FROM seat
ORDER BY id