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

Update table to insert new row if it does not exist

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

如何更新我的 table 中的所有记录 以插入新行 product = 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

UPDATE 语句影响 table 中已经存在的行。

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

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

条件插入可能如下所示:

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)