@dGololobov
начинающий

Как найти дубликаты в базе?

Есть выборка контактов:
ID; NAME; PHONE; EMAIL; WORKS; DELETE
100; Вася; 123456; vasya@gmail.com; 3; <NULL>
100; Вася; 444589; vasya2@gmail.com; 3; <NULL>
200; Вася; 444589; vasya2@gmail.com; 1; <NULL>


Суть в том, что мне нужно проставить флаг DELETE=1 тем контактам у которых совпадают поля PHONE, EMAIL, NAME при этом оставить непомеченным один единственный контакт у которого значение WORKS больше чем у остальных. ID контактов могут быть разные.

Каким запросом это сделать?
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UPDATE `table` AS `t1`
  LEFT JOIN `table` AS `t2`
    ON `t2`.`phone` = `t1`.`phone` AND ...
      AND `t2`.`works` > `t1`.`works`
  SET `t1`.`delete` = 1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы