Вставить с помощью одного оператора вставки - PullRequest
1 голос
/ 11 августа 2009

Я хочу вставить данные в мою таблицу tblSubscription, и я хочу использовать только один оператор вставки. Я собираюсь вставить данные для каждого userId в пользовательской таблице. Следующий SQL не работает.

Insert tblSubscriptions (UserID, ProductID, isACtive, SubscriptionDays, Price, MonthlyPrice, ProductType, CurrencyID)
Values ((Select userID From tblUser where SubscriptionType in(1, 0, null)), 7, 1, 0, 0, 0, 30, 1)

Как это сделать с помощью одного оператора вставки, т.е. без курсоров.

Ответы [ 3 ]

6 голосов
/ 11 августа 2009

Запрос

INSERT INTO tblSubscriptions (UserID, ProductID, IsActive, SubscriptionDays, Price, MonthlyPrice, ProductType, CurrencyID)
SELECT UserID, 7, 1, 0, 0, 0, 30, 1 FROM tblUser WHERE ISNULL(SubscriptionType, 0) IN (1, 0)
3 голосов
/ 11 августа 2009
Insert tblSubscriptions (UserID, ProductID, isACtive, SubscriptionDays, Price, MonthlyPrice, ProductType, CurrencyID)
Select userID, 7, 1, 0, 0, 0, 30, 1
From tblUser where SubscriptionType in (1, 0) or SubScriptionType is null

Предложение IN не будет работать с NULL

0 голосов
/ 11 августа 2009

Просто удалите «Значения»

INSERT(...)
SELECT ...
...