CASE expression on odd and even IDs
SELECT
CASE
WHEN id % 2 = 1 AND id <> (SELECT COUNT(*) FROM seat) THEN id + 1
WHEN id % 2 = 1 AND id = (SELECT COUNT(*) FROM seat) THEN id
ELSE id - 1
END AS id,
student
FROM seat
ORDER BY idThis is the standard compact solution. Odd seat IDs normally move forward by one, even IDs move backward by one, and the final odd row stays put when the table has an odd number of seats.