@kononov971

Взаимная замена в SQL?

Дана таблица проводок provodka
Известно, что в данной таблице есть проводки только с кодом 20501 и 20502.
Как заменить во всех строках 20501 на 20502, а 20502 на 20501.

Как заменить, например 20501 на 20502, я понимаю. REPLACE( Code, 20501, 20502). Последовательно заменить не получается, так как после первой замены во всех строках остается значение 20502.
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
longclaps
@longclaps
Ну, если только 2 значения:
UPDATE provodka SET code = 41003 - code; # 20501 + 20502 == 41003

М - моск )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Первое заменить на третье-любое.
Второе заменить на первое.
Третье заменить на второе.

Л - логика

Если скучно можно другими способами.
https://tproger.ru/problems/popular-ways-to-swap/
Ответ написан
Комментировать
@alexalexes
А почему нельзя использовать решение влоб?
Проход по таблице всего лишь один раз происходит.
UPDATE provodka p
 SET p.code = CASE
when p.code = 20501 then 20502
when p.code = 20502 then 20501
else p.code
END
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы