私は次の表を持っています
id val match_id oddname_id dif
1 1.75 401 1 0.25 //THIS ONE MUST BE DELETED. EXPLAINED BELOW
2 3.30 401 2 -0.20
3 5.00 401 3 0.00
4 1.13 401 4 0.00
Id は単なるインデックスです。主キーは、 oddname_idとmatch_id の組み合わせです。
私はxmlからデータを解析します。ここで私がしなければならないことは次のとおりです。
主キーが存在しない場合は挿入します。
match_id=402 と oddname_id=1 がある場合、挿入する必要があります。これは、match_id 402 が存在しないためです。
重複キーの更新について。
match_id=401 で、oddname_id=1 の場合、val と dif のみを更新する必要があります。(dif は val と新しい値の差に等しい。
KEY DOESN'T EXISTS の場合、すべてのデータを削除したい
これが私のクエリです。最初の 2 つのステートメントは正常に機能しますが、3 つ目のステートメントを機能させる方法については意見がありません。
INSERT INTO odds
(match_id,oddname_id,val)
VALUES
('401','2','3.3'),
('401','3','5.0'),
('401','4','1.25'),
ON DUPLICATE KEY
UPDATE
dif = val-VALUES(val),
val = VALUES(val);
このクエリに次のようなものを追加したい:
IF KEY DOESN'T EXISTS DELETE.
この例では、最初の行を削除する必要があります。
id val match_id oddname_id dif
1 1.75 401 1 0.25
挿入中に VALUES に 401 (match_id) と 1 (oddname_id) がないためです。