私は2つの列を持つテーブルを持っています:
ItemMaster (Item INT, Quantity INT)
アイテムが既にある場合は、数量を更新する必要があります。それ以外の場合は、このテーブルにレコードを挿入する必要があります。
これはループなしで可能ですか?
SQL Server 2005 を使用しています。
私は2つの列を持つテーブルを持っています:
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)
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