価格がMODEL
が一意である私のテーブルの価格と異なる場合、単に(更新)DATE
、PRICE
およびOLDPRICE
を交換したいと考えています。行が重複しない場合はINSERT?
サンプル行表データ:
DATE | MAKE | MODEL | PRICE | OLDPRICE
2012-04-15 | Advance | DTA-100-X | 400 | 390
これを行うにはダースの方法があるに違いありませんが、私は、MySQLのクエリで使用するのに最適な解決策を探しています。
私が使用している必要があります。
INSERT INTO..ON DUPLICATE KEY UPDATE
REPLACE INTO..
UPDATE...WHERE PRICE != XXX
をMODEL
は同じですがPRICE
が異なる場合は必須構文はUPDATE
になります。これは、価格が変更されたか否かREPLACES PRICE
* * UPDATE
UPDATE
にOLDPRICE
になります。私はしかし、それは日付が違うんので、更新は/価格はすなわち変更された場合、これは例上で与えられたものを更新するべきではありません置き換えたい:
REPLACE INTO MyTable (DATE, MAKE, MODEL, PRICE, OLDPRICE) VALUES ('2012-10-02', 'Advance', 'DTA-100-X', '400', '390')
便利な用語は、「アップサート」(UPDATEとINSERTの組み合わせ)です。 –
私は数年間、方法番号1を使用していますが正常に動作します。すでに一致するキーがない場合は、1と2の両方が新しいデータをテーブルに挿入します。 –