2015-01-14 5 views
0
id | Product | PrdouctOption| ServiceId 
1 | 1   | 1   | 12 
2 | 2   | 1   | 12 
3 | 1   | 1   | 13 
4 | 2   | 1   | 13 
5 | 1   | 2   | 14 
6 | 1   | 1   | 15 

Как обновить все записи в моей таблице, чтобы вставить новую строку из продукта = 2 и productOption = 1, если он не существует для a ServiceId. (в данном случае для обслуживания 14 и 15)таблицу Update, чтобы вставить новую строку, если она не существует

Я не могу получить логическое право.

До сих пор это то, что у меня есть ..

UPDATE dbo.MyTable 
    SET Product = 2, ProductOption = 1 

//Can't figure out the logic for if it doesn't exist for a serviceid 
+0

Вы хотите выполнить 'UPDATE' или' INSERT' или, возможно, оба? –

+1

Мне непонятно, в чем ваш вопрос. –

+1

И какие СУБД вы используете? Либо mysql, либо sql-server, это не одно и то же. –

ответ

2

Условный вставка может выглядеть примерно так:

INSERT INTO table1 (Product,ProductOption, ServiceId) 
SELECT DISTINCT 2,1, serviceId FROM Table1 t1 
WHERE NOT EXISTS 
    (SELECT 1 FROM table1 
    WHERE product = 2 
    AND ProductOption = 1 
    AND ServiceId = t1.ServiceId) 
+0

Это частично работает .. он не дает ServiceId для новой строки. – UmerMo

+0

А теперь я наконец получаю то, что вы пытаетесь сделать. Прочитайте мой пересмотренный ответ. – wvdz

+0

Это создало дубликаты. Он вставил новые строки для уже существующих. – UmerMo

0

UPDATE утверждение затрагивает строки, которые уже существуют в таблице.

Чтобы добавить новую строку в таблицу, вы должны использовать оператор INSERT.

(Обратите внимание, что UPDATE заявление в вопросе будет обновляться каждый строку в таблице, нет никакого ИНЕКЕ.)

Смежные вопросы