Поменять местами соседние записи



В таблице seat хранятся имена учеников и сведениях об их местах в классе.



Напишите MySQL запрос, который поменяет местами соседних учеников.



Если количество учеников нечётное — последнего ученика никуда пересаживать не надо.



Исходная таблица:

id student

1 Abbot

2 Doris

3 Emerson

4 Green

5 Jeames



Что должно получиться:

id student

1 Doris

2 Abbot

3 Green

4 Emerson

5 Jeames




Решение



SELECT

CASE

WHEN ((SELECT MAX(id) FROM seat)%2 = 1) AND id = (SELECT MAX(id) FROM seat) THEN id

WHEN id%2 = 1 THEN id + 1

ELSE id - 1

END AS id, student

FROM seat

ORDER BY id;



@sqlhub