当該テーブルは date、productの2カラムについてユニークのインデックスがついています。(同じ日、同じ製品についてのレコードは1行のみの制約)
CSVから取り込んだデータで、未登録の物はINSERT、登録済みのものはUPDATEになっています。
PHP(PDOで処理)する既存のSQL文
SQL
1INSERT INTO `table` (`date`,`update`,`product`,`value`) VALUES (:date,:change_datetime,:product,:val) ON DUPLICATE KEY UPDATE `update`=:change_datetime,`value`=:val';
現状では、
・レコードがなければINSERT
・レコードがあれば(value値に変更がなくても)UPDATE(update
のDATETIMEが更新される)
これを、
・レコードがなければINSERT
・レコードがあって、なおかつ「value値が:valと異なる場合のみUPDATE」
・上記いずれにも該当しない場合は「何もしない」
としたい場合、SQL1つで実現する方法はありますでしょうか?
(一旦SELECTでデータ取得して、PHP側で値を評価してSQL発行する方法ならわかるのですが、単発SQL文で処理できないものかと)
宜しくお願いします。