更新表以插入新行(如果不存在)

时间:2015-01-14 14:16:14

标签: sql-server database sql-update sql-insert

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

如何更新表格中的所有记录,以插入新行 product = 2 productOption = 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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

UPDATE语句会影响表中已存在的行。

要向表中添加新行,您需要使用INSERT语句。

(请注意,问题中的UPDATE语句将更新表中的每个行;没有任何WHERE子句。)