Тема данной статьи подсказана посетителем сайта, за что огромное вам спасибо, Василий.
Итак, задача заключается в том, чтобы реализовать 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, снова указано изменяемое поле. Это сохранит записи, которые не вошли в список, без изменения.
Обновление нескольких записей разными данными значениями в SQL
Удаление повторяющихся строк в таблице запросом SQL
Запросы SQL добавления данных (INSERT)
akyl91
- 24 сентября 2023, 23:59 ↓«num IN (2, 3)» — то что искал!