Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > удаление повторяющихся записей


Автор: zhz 31.3.2011, 07:04
Имеется таблица (тел справочник) Phones c полями 
id,phone,abonent,street,building,flat,creation_date,who_create,comment
необходимо удалить все записи которые возвращает запрос
select distinct phone,abonent,street,building,flat,comment from Phones
Т.Е. удалить записи дублирующиеся только по определенным полям. Как это правильно сделать? Пробовал по разному, не получилось((
СУБД mssql2000

Автор: Akina 31.3.2011, 07:37
Скопируйте результат запроса в другую таблицу, очистите исходную, переместите записи обратно.

Автор: Zloxa 31.3.2011, 10:59
Цитата(zhz @  31.3.2011,  07:04 Найти цитируемый пост)
удалить записи дублирующиеся только по определенным полям

Код

delete from Phones t1 
where exists (
  select null 
  from Phones t2 
  where t1.id < t2.id -- изменить этот критерй на неравнство, если не надо оставлять одной не дублирующейся записи
    and  (t1.phone = t2.phone or t1.phone is null and t2.phone is null)
    and  (t1.abonent= t2.abonent or t1.abonent is null and t2.abonent is null)
    and  (t1.street= t2.street or t1.street is  null and t2.street is null)
...
)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)