Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

MYSQL Убираем дубли из таблицы — есть ID и нет ID

MYSQL Убираем дубли из таблицы если есть поле ID

CREATE TEMPORARY TABLE `t_temp` as ( SELECT min(id) as id FROM `table` GROUP BY name, surname ); 
DELETE from `table` WHERE `table`.id not in ( SELECT id FROM t_temp );

MYSQL Убираем дубли из таблицы если нет поля ID

на примере таблицы b_user_access_check
В текущей версии 1С Битрикс айдишника нет и пишут они туда без какого либо контроля на дубли, в результате чего у одного из клиентов 80 млн. записей и 8 гигабайт «вес» файла таблицы, всё это «добро» от включенной галочки «Сохранять историю изменения полей профиля пользователя:» и нулём в «Сколько дней хранить историю».
Собственно, штатных методов почистить не нашел и саппорт тоже ничего не подсказал, поэтому убираем дубли напрямую запросом:

CREATE TEMPORARY TABLE `t_temp` as ( SELECT DISTINCT `USER_ID`, `PROVIDER_ID` FROM `b_user_access_check` GROUP BY `USER_ID`, `PROVIDER_ID` );
TRUNCATE TABLE `b_user_access_check`;
INSERT INTO `b_user_access_check` (`USER_ID`, `PROVIDER_ID`) SELECT `USER_ID`, `PROVIDER_ID` FROM `t_temp`;

Share the post

MYSQL Убираем дубли из таблицы — есть ID и нет ID

×

Subscribe to Gtalex – о работе в сети и не только

Get updates delivered right to your inbox!

Thank you for your subscription

×