У меня есть следующая таблица
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
Идентификатор - это просто индекс.И первичный ключ oddname_id и match_id вместе.
Я анализирую данные из XML и вот что я должен сделать:
Вставить, если ПЕРВИЧНЫЙ КЛЮЧ НЕ СУЩЕСТВУЕТ.
Когда у меня есть match_id = 402 и oddname_id = 1, я должен вставить, потому что match_id 402. не существует.
ON DUPLICATE KEY UPDATE.
Когда у меня match_id = 401 и oddname_id = 1, я должен обновить только val и dif.(dif = разница в значении val и его новом значении.
Я хочу удалить все данные, если ключ не существует
Вот мой запрос; первые два утверждения работают нормально, но я не знаю, как заставить работать 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
Поскольку у меня нет 401 (match_id) и 1 (oddname_id) в VALUES при вставке.