0

私は2つの列を持つテーブルを持っています:

ItemMaster (Item INT, Quantity INT)

アイテムが既にある場合は、数量を更新する必要があります。それ以外の場合は、このテーブルにレコードを挿入する必要があります。

これはループなしで可能ですか?

SQL Server 2005 を使用しています。

4

2 に答える 2

4

はい、ループなしで実行できます。

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

IF @@ROWCOUNT = 0
    INSERT INTO table1 (Item, Quantity)
    VALUES (@itemID, 1)
于 2010-08-18T08:12:52.687 に答える
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 
于 2010-08-18T08:15:07.847 に答える