У меня есть следующий запрос:SQL - IF EXISTS UPDATE ELSE INSERT
INSERT INTO distance (deviceID,datum,tavolsag)
SELECT
deviceID, DATE(FROM_UNIXTIME(timestamp)) as datum,
sum(case when distanceKM/1000<416 then distanceKM/1000 else 0 end) as tavolsag
FROM eventdata
GROUP BY datum,deviceID;
Я хотел бы знать, как можно избежать дублирования данных при запуске запроса на ежедневной основе/или использовать «, если существует обновление еще insert ".
Thx
благодарит вас за разъяснение! deviceId и datum являются уникальным ограничением. – Peter
@Peter: еще одно примечание: если ваша целевая таблица имеет определенный столбец AUTO_INCREMENT, то выполнение инструкции 'INSERT ... ON DUPLICATE KEY' будет записываться через значения auto_increment, даже если оператор выполняет действие UPDATE. Сначала MySQL пытается сначала ввести INSERT (и тогда, когда он использует значение AUTO_INCREMENT), а затем возвращается к UPDATE только при дублировании ключевого исключения. – spencer7593