У меня есть таблица с двумя столбцами:
ItemMaster (Item INT, Quantity INT)
Если предмет уже есть, тогда я должен обновить количество. В противном случае мне нужно вставить запись в эту таблицу.
Возможно ли это без цикла?
Я использую SQL Server 2005.
Это можно сделать без цикла да:
UPDATE table1 SET Quantity = Quantity + 1 WHERE Item = @itemID IF @@ROWCOUNT = 0 INSERT INTO table1 (Item, Quantity) VALUES (@itemID, 1)
ДЛЯ одной строки
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