Veneomin
@Veneomin

Как правильно организовать изменений 50-100 строк в mysql?

На сайте есть каталог товара, нужно сделать так, чтобы можно было выделить галочками 50-100 позиций и изменить у них определенную характеристику. Как это в базе провернуть? Делать 50-100 запросов циклом? Как правильно?
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 4
rework
@rework
Помог ответ? В благодарность отметь его решением
Делать 50-100 запросов циклом?


Вот этого категорически делать не нужно. Изменения должны происходит в рамках одного запроса update, просто сформируйте массив из ID выбранных товаров и проставляйте его в условии where, используя оператор IN, например:

UPDATE table_items
    SET option = true
    WHERE id in (11, 45, 81);
Ответ написан
Комментировать
@RidgeA
Если для всех надо сделать что-то одинаковое - т.е. для всех значение одного поля поставить одинаковым - то update с where id in ....
иначе - для каждого изменения отдельный запрос;
Если драйвер бд позволяет можно сделать несколько запросов одновременно:
mysql.query('UPDATE ... WHERE ID = 1; UPDATE ... WHERE ID = 2;....'. ....)
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Если изменение одинаковое и структура базы позволяет - запрос вида:
update ... where id IN (1, 2, 3)

Если изменения разные и строк 50-100 - то отдельными запросами.

Если строк 100k+, можно заняться извращениями с промежуточной таблицей - кладем в неё данные для обновления, дальше делаем update с join.
Ответ написан
Комментировать
teknik2008
@teknik2008
Расскажите про GOLANG. Мне интересно
UPDATE "my-table" AS t
  SET "val"=v."val",
    "msg"=v."msg"
   FROM (VALUES(1,123,'hello'),(2,456,'world!'))
   AS v("id","val","msg") WHERE v.id = t.id
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы