1. ホーム
  2. mysql

[解決済み] MySql テーブル Insert if not exist otherwise update (存在しなければ更新)

2022-11-23 03:47:45

質問

UPDATE AggregatedData SET datenum="734152.979166667", 
Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";

があれば動作します。 datenum が存在する場合は動作しますが、もし datenum が存在しない場合、このデータを新しい行として挿入したいのです。

アップデイト

データ型は一意ですが、主キーではありません。

どのように解決するのですか?

ジャイさんの言うとおり INSERT ... ON DUPLICATE KEY UPDATE .

datenum はユニークキーなので、更新節に含める必要はありません。テーブルの他のすべてのカラムを含める必要があります。そのためには VALUES() 関数を使用して、他のカラムを更新するときに適切な値が使用されることを確認します。

以下は、適切な INSERT ... ON DUPLICATE KEY UPDATE の構文で書き直したものです。

INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)