add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE student (
id int,
name varchar(128)
);

INSERT INTO student (id,name) VALUES
(1,'John'),
(2,'Bob'),
(3,'Alice'),
(4,'Don'),
(5,'Eve');
5 rows affected
UPDATE s
SET name = CASE WHEN rn % 2 = 0 THEN prevName ELSE nextName END
FROM (
SELECT *,
prevName = LAG(name, 1, name) OVER (ORDER BY id),
nextName = LEAD(name, 1, name) OVER (ORDER BY id),
-- the extra parameters mean you get the current value if there is no next row
rn = ROW_NUMBER() OVER (ORDER BY id)
FROM student
) s

5 rows affected
select * from student
id name
1 Bob
2 John
3 Don
4 Alice
5 Eve