sql >> データベース >  >> RDS >> Mysql

MYSQLINSERTまたはUPDATEIF

    まず、UNIQUEを追加します 名前、バーコード、アイテム、場所、価格に関する制約。

    ALTER TABLE  tableX
      ADD CONSTRAINT tableX_UQ
        UNIQUE (name, barcode, item, location, price) ;
    

    次に、INSERT INTO ... ON DUPLICATE KEY UPDATEを使用できます。 :

    INSERT INTO tableX
      (name, barcode, item, location, price, quantity, date)
    VALUES
      (?, ?, ?, ?, ?, ?, ?)
    ON DUPLICATE KEY UPDATE
      quantity = CASE WHEN VALUES(date) > date
                   THEN quantity + VALUES(quantity)        -- add quantity
                   ELSE quantity                           -- or leave as it is
                 END
    , date = CASE WHEN VALUES(date) > date
                   THEN VALUES(date) ;                     -- set date to new date
                   ELSE date                               -- or leave as it is
                 END 
    

    REPLACE 使用することもできますが、動作に違いがあります(特に外部キーがある場合は重要です)。詳細については、この質問を参照してください「INSERTIGNORE 」と「INSERT…ONDUPLICATEKEYUPDATE」 INSERT IGNOREの違いについて説明している@BillKawinによる回答 INSERT ... ON DUPLICATE KEY およびREPLACE



    1. 部分的に引用されたCSVファイルをSQLServerに一括挿入

    2. MYSQLのクエリを使用して2文字間のテキストを削除する方法

    3. mysqlでバランスを計算する

    4. 教義と複合のユニークな鍵