СтатьиРабота с SQL и базами данных

Обновление нескольких записей разными данными значениями в SQL

Тема данной статьи подсказана посетителем сайта, за что огромное вам спасибо, Василий.

Итак, задача заключается в том, чтобы реализовать SQL запрос, который будет менять данные сразу в нескольких строках таблицы. Если не принимать во внимание то, что значение для каждой строки могут быть разными, то можно выполнить простой запрос на обновление:

UPDATE goods SET price = 150 WHERE num = 2 OR num = 3;

или:

UPDATE goods SET price = 150 WHERE num IN (2, 3);

В этих случаях, в двух строках поля price будет внесено одинаковое значение 150. Нам же необходимо, внести в таблицу разные значения.

Для множественного выбора, во многих языках программирования имеется конструкция CASE. Именно оно подходит, для одного из наиболее простых решений нашей задачи:

UPDATE goods SET price = CASE num
WHEN 1 THEN 500
WHEN 2 THEN 600

ELSE price END

Первая строка запроса содержит указание на обновляемую таблицу (goods). Затем указывается поле, которому будет присваиваться новое значение, после чего начинается конструкция CASE. В ней задается поле (num), по которому определяется изменяемая строка.

Вторая и третья строки содержат указание на новые значения цены (500, 600) которые следует вносить в таблицу, в зависимости от номера строки (значения num - 1,2).

Последняя строка завершает конструкцию CASE, где после ELSE, снова указано изменяемое поле. Это сохранит записи, которые не вошли в список, без изменения.


Комментарии

Имя:
Текст комментария:
* В комментариях запрещено публиковать рекламные объявления. Сообщения, содержащие ссылки на сторонние ресурсы добавляется в скрытом режиме. Они будут открыты, если не нарушают установленных правил, после проверки.
Защита от спам-роботов (* Обязателельно укажите ответ на простой вопрос ниже.)
Сколько букв в слове «барабан»? (цифра)