Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как обновить одним запросом несколько строк? / 10 сообщений из 10, страница 1 из 1
14.12.2017, 13:34
    #39569593
jtag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
Добрый день. Имеется к примеру три строки:
Код: sql
1.
2.
3.
4.
id, surname, name;
1, Иванов, Иван;
2, Петров, Петр;
3, Сидоров, Сидр;



Как их можно обновить за один раз с помощью update? (вместо иван - петр, вместо петр-сидр, вместо сидр - иван)
...
Рейтинг: 0 / 0
14.12.2017, 13:41
    #39569602
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
В данном случае разумнее соответствия для замены внести во временную таблицу и выполнить многотабличное обновление, связав таблицы надлежащим образом:

Код: sql
1.
2.
3.
UPDATE datatable d, temptable t
SET d.name = t.newname
WHERE d.name = t.oldname
...
Рейтинг: 0 / 0
14.12.2017, 13:53
    #39569611
jtag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
Можно ли сделать обновление без временной таблицы, подготовить массив данных на сервере, потом создать строку запроса типа "UPDATE table1 SET name='Иван11111', name='Петр22222', name=Сидр33333' WHERE id=1, id=2, id=3" ???
...
Рейтинг: 0 / 0
14.12.2017, 14:30
    #39569639
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
UPDATE datatable
SET name = ELT(FIELD(name,'Иван','Петр','Сидр'),'Петр','Сидр','Иван')
...
Рейтинг: 0 / 0
15.12.2017, 09:45
    #39570125
jtag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
как же ничего не понятно, не могли бы разжевать по подробнее и с привязкой к id ? =)
...
Рейтинг: 0 / 0
15.12.2017, 10:51
    #39570173
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
jtag,
а прочитать про функции ELT и FIELD влом?
...
Рейтинг: 0 / 0
19.12.2017, 14:04
    #39571997
kormot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
Уважаемые, я про функции ELD и FIELD почитал, там сказано про работу с буквально последовательными индексами. А есть возможность более широкого применения этих функций, не для id=1,2,3 а для id=100, 10348, 45677?
...
Рейтинг: 0 / 0
19.12.2017, 14:39
    #39572035
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
kormotне для id=1,2,3 а для id=100, 10348, 45677?Да у меня там вообще не числа! и ничего, работает...
...
Рейтинг: 0 / 0
19.12.2017, 20:33
    #39572270
kormot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
Действительно...

Надо получше вникнуть в эти функции. Пока что-то не уложилось до конца в голове как их использовать.
...
Рейтинг: 0 / 0
19.12.2017, 21:33
    #39572297
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить одним запросом несколько строк?
kormotНадо получше вникнуть в эти функции. Пока что-то не уложилось до конца в голове как их использовать.всё просто
SET name = ELT(FIELD(name,'Иван','Петр','Сидр'),'Петр','Сидр','Иван')

FIELD(name,'Иван','Петр','Сидр') для текущей записи берёт значение из поля name, ищет совпадение в списке 'Иван','Петр','Сидр' -если соответствие есть - возвращает индекс.
ELT по этому индексу берёт в своём списке 'Петр','Сидр','Иван'
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как обновить одним запросом несколько строк? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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