Это вопрос об обмене мест из leetcode .
Учитель хочет поменять место для соседних учеников.Входные данные:
+---------+---------+
| 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 MOD(id, 2) != 0 AND counts != id THEN id + 1
WHEN MOD(id, 2) != 0 AND counts = id THEN id
ELSE id - 1
END) AS id,
student
FROM
seat,
(SELECT
COUNT(*) AS counts
FROM
seat) AS seat_counts
ORDER BY id ASC;
Мое решение:
select
(Case
when mod(id,2) !=0 and id != count(*) then id + 1
when mod(id,2) !=0 and id = count(*) then id
else id - 1
end) as 'id',
student
from seat
order by id;
Данное решение работаеточень хорошо, но мой может получить только одну строку вывода.
Мой вывод:
+---------+---------+
| id | student |
+---------+---------+
| 2 | Abbot |
+---------+---------+
Может кто-нибудь объяснить, в чем разница между моим решением и данным решением и почему мое решение неверно?Спасибо.