0

以下に示すようなテーブルがあります

   ItemAttMapID    ItemAttributeID    VendorID    vItemID    Qty
        1                4               1           2       60
        2                4               2           3       10
        3                3               5           5       20

この表ItemAttMapIDには、auto_increment primary_key

ItemAttributeID, VendorID, VItemIDですUnique Mapping

次のクエリを使用しました

INSERT INTO `client`.`mapping`  
(`ItemAttMapID`, `ItemAttributeID`, `VendorID`, `vItemID`, `Qty`)  

VALUES  
(NULL, 4, '2', '3', '70'),  
(NULL, 3, '5', '5', '80')  
ON DUPLICATE KEY UPDATE Qty = VALUES(Qty);

必要な適切な結果が得られますが、特定のレコードを更新する代わりに次のクエリを使用すると、新しいレコードが挿入されます。

INSERT INTO `client`.`mapping`  
(`ItemAttMapID`, `ItemAttributeID`, `VendorID`, `vItemID`, `Qty`)  

VALUES  
(NULL, 2, '5', '5', '80')  
ON DUPLICATE KEY UPDATE Qty = VALUES(Qty);

テーブルの変更は次のようになります

   ItemAttMapID    ItemAttributeID    VendorID    vItemID    Qty
        1                4               1           2       60
        2                4               2           3       10
        3                3               5           5       20
        4                2               5           5       80  

3番目の番号行を更新したいのですが、テーブルに新しいレコードを挿入しています。

ON DUPLICATE KEY UPDATE を使用してこれを達成するにはどうすればよいですか。

編集:

ON DUPLICATE KEY UPDATE を使用してレコード ( NOT THE ) を更新VendorIDvItemIDます。ItemAttributeID

ItemAttributeID同じものVendorIDをクエリに入れるとvItemID、レコードが更新され、そうでない場合は新しいレコードが挿入されるためです。

4

0 に答える 0