626. 换座位

image.png

使用 case when

将奇数 id 加 1,偶数 id 减 1,如果最后一位是奇数,则不变

  1. select (case when mod(id, 2) != 0 and id < max_temp.max_id then id + 1 -- 如果是奇数且小于最大 id,加 1
  2. when mod(id, 2) != 0 and id = max_temp.max_id then id -- 如果是奇数且等于最大 id,不变
  3. else id - 1 end) as id, seat.student -- 如果是偶数,直接减 1
  4. from seat,
  5. (select max(id) as max_id from seat) as max_temp -- 查询总数
  6. order by id;