交换座位
换座位 - LeetCode (中国) https://leetcode-cn.com/problems/exchange-seats/description/
Mary is a teacher in a middle school and she has a table seat
storing students' names and their corresponding seat ids.
The column id is continuous increment.
Mary wants to change seats for the adjacent students.
Can you write a SQL query to output the result for Mary?
+---------+---------+ | id | student | +---------+---------+ | 1 | Abbot | | 2 | Doris | | 3 | Emerson | | 4 | Green | | 5 | Jeames | +---------+---------+
For the sample input, the output is:
+---------+---------+ | id | student | +---------+---------+ | 1 | Doris | | 2 | Abbot | | 3 | Green | | 4 | Emerson | | 5 | Jeames | +---------+---------+
SELECT * FROM ( SELECT a.id,b.student FROM seat a LEFT JOIN seat b ON a.id=b.id-1 WHERE a.id MOD 2=1 AND a.id!=(SELECT MAX(id) FROM seat) UNION ALL SELECT * FROM seat WHERE id MOD 2=1 AND id=(SELECT MAX(id) FROM seat) UNION ALL SELECT a.id,b.student FROM seat a LEFT JOIN seat b ON a.id=b.id+1 WHERE a.id MOD 2=0 ) AS t ORDER BY id ASC;