Skip to main content
Back to problems
#626
Medium Database

Exchange seats

Database
73.9% acceptance
Feb 27, 2026
1879
613
Table: Seat +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | student | varchar | +-------------+---------+ id is the primary key (unique value) column for this table. Each row of this table indicates the name and the ID of a student. The ID sequence always starts from 1 and increments continuously. Write a solution to swap the seat id of every two consecutive students. If the number of students is odd, the id of the last student is not swapped. Return the result table ordered by id in ascending order. The result format is in the following example.

Solution

SQL
LeetCode
solution.sql
#
# Table: Seat
# +-------------+---------+
# | Column Name | Type    |
# +-------------+---------+
# | id          | int     |
# | student     | varchar |
# +-------------+---------+
# id is the primary key (unique value) column for this table.
# Each row of this table indicates the name and the ID of a student.
# The ID sequence always starts from 1 and increments continuously.
# Write a solution to swap the seat id of every two consecutive students. If the number of students is odd, the id of the last student is not swapped.
# Return the result table ordered by id in ascending order.
# The result format is in the following example.
# Example 1:
# Input:
# Seat table:
# +----+---------+
# | id | student |
# +----+---------+
# | 1  | Abbot   |
# | 2  | Doris   |
# | 3  | Emerson |
# | 4  | Green   |
# | 5  | Jeames  |
# +----+---------+
# Output:
# +----+---------+
# | id | student |
# +----+---------+
# | 1  | Doris   |
# | 2  | Abbot   |
# | 3  | Green   |
# | 4  | Emerson |
# | 5  | Jeames  |
# +----+---------+
# Explanation:
# Note that if the number of students is odd, there is no need to change the last one's seat.
#

# Write your MySQL query statement below

SELECT
  CASE
    WHEN id % 2 = 1 AND id + 1 <= (SELECT MAX(id) FROM Seat) THEN id + 1
    WHEN id % 2 = 0 THEN id - 1
    ELSE id
  END AS id,
  student
FROM Seat
ORDER BY id;