Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вставка отсутствующих записей  [new]
shefus
Member

Откуда:
Сообщений: 116
Подскажите, если не сложно, как сделать красиво (а то у меня как-то громоздко получается) следующее:

Есть таблица Таб с двумя полями ИД1, ИД2
и переменные @P1 и @P2

Необходимо:
Если в Таб отсутствуют записи по критерию ИД1=@P1 and ИД2=@P2, то вставить запись ИД1=@P1, ИД2=@P2 , иначе ничего не вставлять.
29 окт 13, 18:00    [15048295]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
INSERT ... SELECT ... FROM ... WHERE NOT EXISTS()

MERGE
29 окт 13, 18:08    [15048321]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
_djХомяГ
Guest
Из одной таблицы в другую без переменных через NOT EXISTS напримеп
29 окт 13, 18:09    [15048325]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
shefus
Если в Таб отсутствуют записи по критерию ИД1=@P1 and ИД2=@P2, то вставить запись ИД1=@P1, ИД2=@P2 , иначе ничего не вставлять.
INSERT ...
SELECT ...
FROM ...
WHERE NOT EXISTS(...)
29 окт 13, 18:09    [15048326]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
shefus
Member

Откуда:
Сообщений: 116
iap
INSERT ... SELECT ... FROM ... WHERE NOT EXISTS()


т.е.
INSERT таб1 SELECT @P1, @P2 FROM Откуда? WHERE NOT EXISTS(SELECT ИД1, ИД2 FROM таб1 WHERE ИД1=@P1 and ИД2=@P2)
Что-то не то...
Как-то не понятно - таблица то одна (из одной таблицы в другую - там всё ясно, а здесь...)
iap
MERGE


Не пойдет - MSSQL 2005

_djХомяГ
Из одной таблицы в другую без переменных через NOT EXISTS напримеп


Таблица одна - переменные MSSQL получает от клиента
29 окт 13, 18:25    [15048392]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
Гость333
Member

Откуда:
Сообщений: 3683
shefus
INSERT таб1 SELECT @P1, @P2 FROM Откуда? WHERE NOT EXISTS(SELECT ИД1, ИД2 FROM таб1 WHERE ИД1=@P1 and ИД2=@P2)

В MSSQL можно выбирать значения "из ниоткуда":
INSERT таб1 SELECT @P1, @P2 WHERE NOT EXISTS(SELECT ИД1, ИД2 FROM таб1 WHERE ИД1=@P1 and ИД2=@P2)
29 окт 13, 18:37    [15048449]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
shefus
Member

Откуда:
Сообщений: 116
Ок. Всем спасибо - сейчас попробую.
29 окт 13, 18:41    [15048471]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
shefus
Member

Откуда:
Сообщений: 116
Все работает! Ещё раз всем спасибо!
29 окт 13, 18:49    [15048502]     Ответить | Цитировать Сообщить модератору
 Re: Вставка отсутствующих записей  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Уникальный индекс по полям ИД1, ИД2 с ignore_dup_key и обычный INSERT ... VALUES еще не предлагали?
29 окт 13, 21:45    [15049201]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить