这道题很数学,需要转个弯。
方法一:使用case when后,如果学生人数是奇数,则改变了最后一个同学的座位。这时我们需要使用窗口函数重新进行一次排序。
select row_number() over (order by new_id) id,student from ( select case when id%2=1 then id+1 else id-1 end as new_id,student from seat ) a ;