Пронумеруйте строки по id и поменяйте сортировочные позиции 2 и 3 через CASE. Это перестановка строк в результате, а не изменение данных таблицы.
-- вывести список книг отсортированный по id,
Пронумеруйте строки по id и поменяйте сортировочные позиции 2 и 3 через CASE. Это перестановка строк в результате, а не изменение данных таблицы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
-- вывести список книг отсортированный по id, -- но в выводе поменять 2 и 3 строки местами:
-- 1 Мастер и Маргарита 100 -- 3 Золотой теленок 50 -- 2 Двенадцать стульев 200 -- 4 Евгений Онегин 250 -- 5 Повести Белкина 90 -- 6 Три мушкетера 60
Ответ
Пронумеруйте строки по id и поменяйте сортировочные позиции 2 и 3 через CASE. Это перестановка строк в результате, а не изменение данных таблицы.
Для условной таблицы books(id, title, price):
WITH ranked AS (
SELECT id, title, price,
ROW_NUMBER() OVER (ORDER BY id) AS rn
FROM books
)
SELECT id, title, price
FROM ranked
ORDER BY CASE rn WHEN 2 THEN 3 WHEN 3 THEN 2 ELSE rn END;
Предполагается уникальность id. Решение меняет именно вторую и третью строки даже при пропусках идентификаторов; исходные записи остаются нетронутыми.