1. Забекапить таблицу log_session_<mid>_<yyyyMM>.
2. Создать временную таблицу temp_phone_duplicate
Код:
CREATE TABLE `temp_phone_duplicate` (
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
3. Посмотреть дубли
Код:
SELECT COUNT(*), * FROM log_session_<mid>_<yyyyMM> WHERE source_id=<sourceId>
GROUP BY source_id, hour, cid, item_id, session_start, session_time, from_number
HAVING COUNT(*)>1
4. Выбрать по одному из дублирующихся во временную таблицу
Код:
INSERT INTO temp_phone_duplicate
(
SELECT MAX(id) FROM log_session_<mid>_<yyyyMM> WHERE source_id=<sourceId>
GROUP BY source_id, hour, cid, item_id, session_start, session_time, from_number
HAVING COUNT(*)>1
)
5. Посмотреть количество дублировавшихся звонков
Код:
SELECT COUNT(*) FROM temp_phone_duplicate
6. Удалить выбранные дубли temp_phone_duplicate
Код:
DELETE FROM log_session_<mid>_<yyyyMM> WHERE id IN ( SELECT id FROM temp_phone_duplicate )
После необходимо запустить установку баланса телефонии...
P.S. После переобратки дублирующиеся звонки вернутся. Можно аналогично сделать с таблицами data_log а потом просто запустить переобработку, но таблицы data_log подневные.