我有兩列的表:無循環插入或更新?
ItemMaster (Item INT, Quantity INT)
如果項目已經存在,那麼我應該更新的數量。否則,我必須在此表中插入一條記錄。
這可能沒有循環?
我使用的是SQL Server 2005中
我有兩列的表:無循環插入或更新?
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)
你是對的,但對於你的回答,我必須使用所有項目的循環,並逐一處理項目,而不是可能。 – KuldipMCA 2010-08-18 10:06:58
我的答案不涉及任何循環。如果這裏有另一個需求,你可能需要編輯你的問題。 – Codesleuth 2010-08-18 10:16:54
是的,但因爲你必須使用IN子句,就像那裏的ITEMID IN(從ITEMMASTER中選擇ItemID) – KuldipMCA 2010-08-18 10:34:07
一行
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
正確的2個不同的查詢的一種可能性。 – hgulyan 2010-08-18 08:11:29