插入或更新没有循环?

时间:2010-08-18 08:08:32

标签: sql sql-server-2005 stored-procedures insert-update

我有两列的表格:

ItemMaster (Item INT, Quantity INT)

如果某个项目已经存在,那么我应该更新数量。否则,我必须在此表中插入一个记录。

如果没有Loop,这可能吗?

我正在使用SQL Server 2005。

2 个答案:

答案 0 :(得分:4)

可以在没有循环的情况下完成:

UPDATE table1
SET Quantity = Quantity + 1
WHERE Item = @itemID

IF @@ROWCOUNT = 0
    INSERT INTO table1 (Item, Quantity)
    VALUES (@itemID, 1)

答案 1 :(得分:2)

一行

 IF EXISTS (SELECT * from ItemMaster WHERE Item = @Item)
    UPDATE ItemMaster
      SET Quantity = @Quantity
    WHERE Item = @Item
 ELSE
    INSERT INTO ItemMaster VALUES(@Item, @Quantity)

对于很多行:

 INSERT INTO ItemMaster (Item, Quantity)
 SELECT Item, Quantity
 FROM AnotherTable a
 WHERE NOT EXISTS (Select 1 from ItemMaster i Where i.Item = a.Item);

 UPDATE ItemMaster i
    SET Quantity = a.Quantity
 FROM AnotherTable a
 WHERE a.Item = i.Item