- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть таблица working - в которой есть поля item_id и c_id
И довольно часто есть дубли - записи с одинаковыми item_id и c_id ?
пример на скрине. Как мне удалить дубли, чтобы остался только один вариант?
ALTER IGNORE TABLE `working` ADD UNIQUE INDEX (`item_id`, `c_id`);
ALTER TABLE `working` DROP INDEX (`item_id`, `c_id`);
Хотя, я бы оставил уникальный индекс, чтобы в дальнейшем дубли не появлялись
ALTER IGNORE TABLE `working` ADD UNIQUE INDEX (`item_id`, `c_id`);
#1062 - Дублирующаяся запись '286075-0' по ключу 'item_id'
Не получится поставить уникальный индекс - дубли же есть :)))
IGNORE в запросе как раз должно было бы убрать эту досадную ошибку
Если долго мучиться, что-нибудь получится. Если таблица большая, то возможен вариант с HAVING, чтобы уменьшить временную таблицу
Оба запроса выполнить в одном сеансе.
---------- Добавлено 29.09.2017 в 11:33 ----------
Если долго мучиться, что-нибудь получится. Если таблица большая, то возможен вариант с HAVING, чтобы уменьшить временную таблицу
Оба запроса выполнить в одном сеансе.
Chukcha, я наверное не догоняю - а где в ваших примерах анализ полей
`item_id`, `c_id` ?
Как же оно найдет дубли?
А GROUP BY зачем?
Так должно быть?
as (
SELECT min(id) as id
FROM `working`
GROUP BY item_id, c_id
);
DELETE FROM working
WHERE id NOT IN (SELECT * FROM t_temp);
Перед использованием проверьте
проверил, нашло 72 дубля.
добавил к запросу
DELETE FROM working
WHERE id NOT IN (SELECT * FROM t_temp);
в итоге удалило все нафиг кроме этих 72 записей :))))
Да, кажется с having я погорячился.