MySQL独自のREPLACE文
指定した主キーを持つレコードがテーブルに存在しなければレコードを追加し、存在している場合はそのレコードを削除したうえで追加します。
mysql> REPLACE t_syohin VALUES -> ('100C02','コンパクトフラッシュ2G','CF',20000); Query OK, 1 row affected (0.08 sec) mysql> select * from t_syohin; +--------+------------------------+-------+-------+ | shcd | shname | kigou | tanka | +--------+------------------------+-------+-------+ | 100001 | USBメモリー128 | USBM | 2400 | | 100002 | USBメモリー256 | USBM | 3500 | | 100003 | USBメモリー512 | USBM | 5000 | | 100101 | SDメモリーカード128 | SDMC | 2300 | | 100102 | SDメモリーカード256 | SDMC | 4900 | | 100103 | SDメモリーカード512 | SDMC | 5400 | | 100201 | スマートメディア32 | SM | 1200 | | 100202 | スマートメディア64 | SM | 2500 | | 100203 | スマートメディア128 | SM | 5400 | | 100C01 | コンパクトフラッシュ | 1GCF | 8200 | | 100C02 | コンパクトフラッシュ2G | CF | 20000 | +--------+------------------------+-------+-------+ 11 rows in set (0.00 sec) mysql> REPLACE t_syohin VALUES -> ('100C02','コンパクトフラッシュ2G','CF',18000); Query OK, 2 rows affected (0.04 sec) mysql> select * from t_syohin; +--------+------------------------+-------+-------+ | shcd | shname | kigou | tanka | +--------+------------------------+-------+-------+ | 100001 | USBメモリー128 | USBM | 2400 | | 100002 | USBメモリー256 | USBM | 3500 | | 100003 | USBメモリー512 | USBM | 5000 | | 100101 | SDメモリーカード128 | SDMC | 2300 | | 100102 | SDメモリーカード256 | SDMC | 4900 | | 100103 | SDメモリーカード512 | SDMC | 5400 | | 100201 | スマートメディア32 | SM | 1200 | | 100202 | スマートメディア64 | SM | 2500 | | 100203 | スマートメディア128 | SM | 5400 | | 100C01 | コンパクトフラッシュ | 1GCF | 8200 | | 100C02 | コンパクトフラッシュ2G | CF | 18000 | +--------+------------------------+-------+-------+ 11 rows in set (0.00 sec)