SELECT s.seat,
CASE
WHEN MOD(s.seat, 2) = 1 THEN COALESCE(s2.name, s.name)
ELSE s2.name
END AS name
FROM Students s
LEFT JOIN Students s2
ON ( (MOD(s.seat, 2) = 1 AND s2.seat = s.seat + 1)
OR (MOD(s.seat, 2) = 0 AND s2.seat = s.seat - 1) )
ORDER BY s.seat;
SELECT
IFNULL(s2.seat, s1.seat) AS seat,
s1.name
FROM Students AS s1
LEFT JOIN Students AS s2
ON s2.seat = s1.seat - 1 + 2 * MOD(s1.seat, 2)
В тексте задачи не сказано, что результат запроса должен быть отсортирован.автоинкрементное поле, пропусков нетв реальной жизни нет и быть не может. Если поле автоинкрементное, в нём неизбежно будут пропуски.
+----------+----------+
| seat | name |
+----------+----------+
Было принято решение поменять студентов, которые сидят рядом, местами. Напишите SELECT-запрос, который из исходной таблицы сформирует расположение студентов после пересадки.
Примечание. 1 меняется местом со 2, 3 с 4 и так далее. Если студентов нечетное количество, то последний студент не пересаживается, а остается на своем месте.
Столбцы в результате
seat - номер места студента (автоинкрементное поле, пропусков нет)
name - имя студента.
Помогите пожалуйста решить задачу