Welcome to MSDN Blogs Sign in | Join | Help

Гайдар Магдануров

Платформа и инструменты разработки, новости компании Microsoft и мысли об ИТ
Удаление повторяющихся записей из таблицы в SQL Server

"Эти дубликаты так раздражают", сказал админ и удалил все записи в таблице.
Из страшного сна администратора

Представим себе таблицу Peope, имеющую колонки PersonId uniqueidentifier, Name nvarchar, Email nvarchar и захламленную дублирующими записями, от которых нам хотелось бы избавиться. Самый простой способ выполнить следующий запрос:

delete from p from people p, people t
where p.email = t.email
        
and p.name = t.name
        
and p.personid > t.personid

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

Posted: Tuesday, July 17, 2007 4:23 PM by gaidar
Filed under:

Comments

No Comments

New Comments to this post are disabled
Page view tracker