Удалить повторяющиеся значения из поля в таблице MySQL

Я после некоторой помощи собираю запрос, чтобы удалить дубликаты данных в определенном поле в одной из моих таблиц.

У меня есть таблица контактов, которую мне нужно импортировать в другую систему. Новая система требует, чтобы поле электронной почты было уникальным. Мне нужен запрос, который позволит мне выполнить поиск в поле электронной почты и удалить любые дублирующиеся данные или установить для него значение "".

Я не хочу удалять строки, просто дубликат электронного письма. Так что, если есть две записи, содержащие адрес электронной почты gaz@example.com, я хочу сохранить первую ссылку при удалении второй.

Кажется, что это должно быть простым делом, но я изо всех сил работаю над тем, как этого добиться. Благодарю.

2 ответа

Решение

Вам нужно использовать запрос, подобный следующему:

UPDATE CONTACTS A, CONTACTS B
  SET B.EMAIL=NULL
WHERE A.EMAIL=B.EMAIL
  AND A.KEY_FIELD>B.KEY_FIELD

Используйте ссылку на поле, чтобы определить, какие из них удалены.

UPDATE CONTACTS SET b.email = ""
FROM CONTACTS a, CONTACTS b
WHERE a.EMAIL = b.EMAIL AND a.ID>b.ID

Другое возможное решение

Ссылка:

http://stackru.com/questions/2044467/how-to-update-two-tables-in-one-statement-in-sql-server-2005
Другие вопросы по тегам