2015-01-14 58 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 

如何更新在我的表中的所有记录插入产品的新行= 2productOption = 1,如果它不存在,它对于ServiceId(在这种情况下,对于serviceId 14和15)更新表中插入新行,如果不存在

我似乎无法获得逻辑权限。

到目前为止,这是我..

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

你正在使用哪些DBMS?不管是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语句将更新表中的每;没有任何WHERE子句。)

相关问题