powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите оптимизировать UPDATE
6 сообщений из 6, страница 1 из 1
Помогите оптимизировать UPDATE
    #39528168
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги помогите, можно ли в один UPDATE завернуть код.

Таблица grid такая.

idworkidday h0h1h2h3h4251050051025106000052510700210351055002035106040053510700550

надо все 5 заменить на нули в idwork=35. Другие цифры не трогать. Строк много, и h0...h23, тоже их много. У меня получается не красиво. Цикл по строкам (сейчас их тут 3 строчки idwork=35) и потом цикл 0..23, итого получается 72 UPDATE! (((((

Код: sql
1.
2.
3.
4.
UPDATE grid SET h0=0 WHERE idwork=35 AND idday=105 AND h0=5
UPDATE grid SET h1=0 WHERE idwork=35 AND idday=105 AND h1=5
UPDATE grid SET h2=0 WHERE idwork=35 AND idday=105 AND h2=5
... и так 72 раза



А может быть под сотню-две строк idwork=35, что будет вообще кошмар с количеством UPDATE.
База спроектирована так, её не перекроить про новой.
Как можно красиво решить задачу?
...
Рейтинг: 0 / 0
Помогите оптимизировать UPDATE
    #39528171
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f50надо все 5 заменить на нули в idwork=35.
+ idday=105 ?
...
Рейтинг: 0 / 0
Помогите оптимизировать UPDATE
    #39528177
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
UPDATE grid 
SET h0=CASE h0 WHEN 5 THEN 0 ELSE h0 END
  , h1=CASE h1 WHEN 5 THEN 0 ELSE h1 END
  , h2=CASE h2 WHEN 5 THEN 0 ELSE h2 END
  , h3=CASE h3 WHEN 5 THEN 0 ELSE h3 END
  , h4=CASE h4 WHEN 5 THEN 0 ELSE h4 END
WHERE idwork=35 
  AND idday=105
...
Рейтинг: 0 / 0
Помогите оптимизировать UPDATE
    #39528246
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
UPDATE grid 
SET h0=CASE h0 WHEN 5 THEN 0 ELSE h0 END
  , h1=CASE h1 WHEN 5 THEN 0 ELSE h1 END
  , h2=CASE h2 WHEN 5 THEN 0 ELSE h2 END
  , h3=CASE h3 WHEN 5 THEN 0 ELSE h3 END
  , h4=CASE h4 WHEN 5 THEN 0 ELSE h4 END
WHERE idwork=35 
  AND idday=105



Класс, узнал что так можно, спасибо!!! UPDATE можно столько, сколько строк, это уже нормально. Хотя я уже думал структуру все таки изменить, добавить столбик час, и всё вопрос исчерпан. Но лучше оставлю структуру как было.

982183, ну да, в примере я показал, со 105 24раза, с 106 24раза и т.п.

Но благодаря Akina 24 раза у же не надо ;)
...
Рейтинг: 0 / 0
Помогите оптимизировать UPDATE
    #39528301
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f50со 105 24раза, с 106 24раза
Код: sql
1.
2.
WHERE ...
  AND idday IN (105, 106)

позволит за один раз... а если надо обработать все idday - так вообще нафиг это условие из запроса.
...
Рейтинг: 0 / 0
Помогите оптимизировать UPDATE
    #39528315
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina , да да, точно, уже реализовал, красотища!!! Счастья и удачи вам!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите оптимизировать UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]