SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.08.2019 13:30:55

Martoha
Участник
Зарегистрирован: 05.04.2019
Сообщений: 5

Несколько update в одном запросе.

Добрый день.
Есть необходимость сделать несколько update(сотен).
Вот мой алгорит. Я дерую с одной таблицы нужную инфу.

select t2.id as barcode, SUBSTRING_INDEX(t2.item,'@',1) as art, t1.version, t2.nomenclature_id as nom from trm_in_items t1
left join trm_in_var t2 on t1.id=t2.item and t1.deleted=t2.deleted and t1.nomenclature_id=t2.nomenclature_id
where t1.classif = '.40452.40453.40646.' and t2.id is not null and t2.nomenclature_id=24 order by 2


В ответ приходит напрмер 100 записей


Нужен

UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
**********
И таких сотня мб и больше. nomenclature_id меняется. Получаем его из  селекта(

И таких запросов много( Как можно собрать в один. Подскажите пожалуйста



Я думал прокатит склеить "UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';"  в одну строку и выполнить не прокатило(((
Делаю на C#.
если выполнить в навикате наример то срабатывает)

Отредактированно Martoha (03.08.2019 14:03:46)

Неактивен

 

#2 03.08.2019 22:01:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5840

Re: Несколько update в одном запросе.

если меняется только nomenclature_id, то

UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id in (список nom полученный из селекта);

Неактивен

 

#3 04.08.2019 16:23:34

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2421

Re: Несколько update в одном запросе.

А можно просто завернуть в транзакцию пачку запросов - тогда либо все выполнятся либо ни один.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 06.08.2019 04:04:59

Martoha
Участник
Зарегистрирован: 05.04.2019
Сообщений: 5

Re: Несколько update в одном запросе.

deadka написал:

А можно просто завернуть в транзакцию пачку запросов - тогда либо все выполнятся либо ни один.

Да так и получилось. StringBuilder все собрал в один запрос и отправил. Спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson