https://www.youtube.com/watch?v=m7RNucdXyNI
Similar to: - Swap consecutive seat ids
DROP TABLE IF EXISTS Employees;
CREATE TABLE Employees (
id INT PRIMARY KEY,
name VARCHAR(50),
joiningdate DATE
);
INSERT INTO Employees (id, name, joiningdate)
VALUES
(1, 'Bob', '2020-03-22'),
(2, 'Alice', '2021-01-15'),
(3, 'Charlie', '2019-11-30'),
(4, 'David', '2022-07-19'),
(5, 'Eve', '2023-02-01'),
(6,'Chris', '2023-02-02');
with cte as (
SELECT *
,3*id - 2 as new_id
FROM Employees
)
select a.id
,a.name
,a.joiningdate
,ifnull(b.new_id,a.new_id) as new_id
from cte a left join cte b
on a.id = case when a.id%2=0 then b.id-1
when a.id%2!=0 then b.id+1 end