0

次の形式のテーブルがあります StoreID | アイテム ID | アイテム名 | 数量 StoreID と ItemID は Pkeys です。MySQL クエリを実行して StoreID ='ST1 ' ItemID ='IT1' ItemName='IT' Qty=1000 を挿入しようとしていますが、存在しない場合はレコードを挿入し、存在する場合は Qty = を更新します。 Qty+ 100.mysql Replace into と Duplicate key update を使ってみました。Qty が増加しないことを除いて、私がやりたいことを行います。以下の両方のクエリは、初回実行時に Qty を 0 に設定します。最初は重複したエントリがないため、それは理解できます。私がしたいのは、指定された数量で存在しない場合はレコードを追加し、後で実行するたびに数量のみを更新することです

INSERT INTO Store_Items (storeID, itemId,itemName)  
VALUES ('STR004', '4534','K40')  
ON DUPLICATE KEY UPDATE currentStock = currentStock + 100;  


REPLACE INTO Store_Items  
        SET storeID ='STR004',  
         itemId='4534',  
         itemName='K40',  
         SUM(currentStock) as 'Total',  
         reorderLevel=1000;  
4

1 に答える 1

1

私があなたを正しく理解している場合、あなたのクエリは次のようになります

INSERT INTO Store_Items (storeID, itemId, itemName, Qty)  
VALUES ('STR004', '4534','K40', 100)  
ON DUPLICATE KEY UPDATE Qty = IFNULL(Qty, 0) + 100;

最初の挿入後:

+---------+--------+----------+------+
| storeID | itemId | itemName | Qty  |
+---------+--------+----------+------+
| STR004  |   4534 | K40      |  100 |
+---------+--------+----------+------+

2回目の挿入後:

+---------+--------+----------+------+
| storeID | itemId | itemName | Qty  |
+---------+--------+----------+------+
| STR004  |   4534 | K40      |  200 |
+---------+--------+----------+------+

SQLFiddle

于 2013-03-17T06:42:38.673 に答える