powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про IF EXIST UPDATE/INSERT
4 сообщений из 4, страница 1 из 1
Вопрос про IF EXIST UPDATE/INSERT
    #39588209
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Помогите, пожалуйста, с запрос.

Есть две таблицы storage и incoming.
Надо если есть совпадения по столбцу nomenclature_id, то сделать Update,
если нет - то INSERT.




if exists (select storage.nomenclature_id,incoming.nomenclature_id from storage,incoming where storage.nomenclature_id=incoming.nomenclature_id and incoming.incoming_num='1' )
UPDATE storage set storage.storage_qty=storage.storage_qty+incoming.incoming_qty from incoming where storage.nomenclature_id=incoming.nomenclature_id and incoming.incoming_num='1'
ELSE
INSERT INTO storage(storage.nomenclature_id,storage.storage_qty) (select incoming.nomenclature_id,incoming.incoming_qty from incoming WHERE incoming.incoming_num='1' )
...
Рейтинг: 0 / 0
Вопрос про IF EXIST UPDATE/INSERT
    #39588212
gigar,

почитай про DML оператор MERGE...
...
Рейтинг: 0 / 0
Вопрос про IF EXIST UPDATE/INSERT
    #39588262
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До SQL2008, когда MERGE не было, делали UPDATE,
а затем INSERT, прибавляя в WHERE условие AND NOT EXISTS(SELECT * FROM ... WHERE ...)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
UPDATE storage
SET storage.storage_qty=storage.storage_qty+incoming.incoming_qty
FROM incoming
WHERE storage.nomenclature_id=incoming.nomenclature_id and incoming.incoming_num='1';

INSERT storage(nomenclature_id,storage_qty)
SELECT nomenclature_id,incoming_qty
FROM incoming
WHERE incoming.incoming_num='1' 
AND NOT EXISTS(SELECT * FROM storage S WHERE S.nomenclature_id=incoming.nomenclature_id);


Если версия SQL2008 или более поздняя, то красивее? конечно, то же самое через MERGE.
...
Рейтинг: 0 / 0
Вопрос про IF EXIST UPDATE/INSERT
    #39588276
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо за помощь.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про IF EXIST UPDATE/INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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