Insert子句中的SQL Update

时间:2012-11-20 03:14:11

标签: sql sql-server-2008 tsql

我有一个查询,我在插入一些记录,只要这些记录不存在于表中,但我真的想做的是在其他表中更新该记录的字段,如果它在那里否则插入就像它现在正在做的那样。我将不胜感激任何帮助或建议。可以吗?

    -- Insert into my my Toys table if record not already there (but would like to also update one of its fields)
    INSERT INTO Toys (Date, ToyId)
    SELECT inv.Date, inv.Id
    FROM Inventory inv 
    JOIN InventoryStats invSt ON inv.Id = invSt.InventoryId
WHERE (invSt.IsFixed = 1 AND invSt.IsSent = 0 AND invSt.Date >= '01/01/2012 12:00 PM') AND (inv.Id NOT IN (SELECT ToyId FROM Toys))

基本上如果inv.Id已经在Toys表中,我不想再次插入它,但我想在此过程中更新其中一个标志,如

UPDATE Toys SET NewShipDate = inv.Date WHERE ToyId = Inv.Id

1 个答案:

答案 0 :(得分:2)

您正在寻找MERGE Statement - 如果记录不存在则插入记录,如果记录则更新它。