我有两列的表格:
ItemMaster (Item INT, Quantity INT)
如果某个项目已经存在,那么我应该更新数量。否则,我必须在此表中插入一个记录。
如果没有Loop,这可能吗?
我正在使用SQL Server 2005。
答案 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