Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление двойныз записей  [new]
20050101
Guest
существует таблица с полями:
create table T1 (f1,f2,f3,f4)

как удалить из такой таблицы двойные записи, которые выдает вот такой запрос:
select count(*), f1,f2,f3 from t1 group by f1,f2,f3 having count(*)>1
И удалить надо так, чтобы обязательно осталась одна запись, т.е. если три одингаковые записи, то удалить две любые, если две записи, то удалить одну.
заранее спасибо
20 ноя 06, 16:19    [3425462]     Ответить | Цитировать Сообщить модератору
 Re: Удаление двойныз записей  [new]
Oleg6619
Member

Откуда:
Сообщений: 441
f4 - уникальный или отличается друг от друга в записях
WHILE exists(select* from t1 group by f1,f2,f3 having count(*)>1)
 DELETE  FROM t1
WHERE f4 =(select TOP 1 f4 from t1 t2  WHERE t2.f1=t1.f1 AND t2.f2=t1.f2 AND t2.f3=t1.f3 ORDER BY f4)
20 ноя 06, 16:48    [3425692]     Ответить | Цитировать Сообщить модератору
 Re: Удаление двойныз записей  [new]
Andrew1411
Member

Откуда: Москва
Сообщений: 401
А если уникальных полей в "дублях" нет - тогда курсор
20 ноя 06, 17:02    [3425810]     Ответить | Цитировать Сообщить модератору
 Re: Удаление двойныз записей  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Попробуйте:
delete
  t
from
  T1 t
join
  (select f1,f2,f3 from T1 group by f1,f2,f3 having count(*) > 1) d
on
  t.f1 = d.f1 and t.f2 = d.f2 and t.f3 = d.f3
  and
  exists(select * from T1 t2 where t.f1 = t2.f1 and t.f2 = t2.f2 and t.f3 = t2.f3 and t.f4 < t2.f4)
20 ноя 06, 17:24    [3425957]     Ответить | Цитировать Сообщить модератору
 Re: Удаление двойныз записей  [new]
20050101
Guest
Спасибо за помощь. Пришлось использовать курос, так как он работает быстрее. очень странно, но это так. Возможно потому что таблица не индексированна. Еще раз спасибо за помощь.
20 ноя 06, 18:04    [3426203]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Удаление двойныз записей  [new]
aleksey_khab
Member

Откуда:
Сообщений: 12
Prolog,

Спасибо, наглядный пример! мне тоже пригодился! )
30 ноя 11, 05:19    [11681143]     Ответить | Цитировать Сообщить модератору
 Re: Удаление двойныз записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
aleksey_khab
Prolog,

Спасибо, наглядный пример! мне тоже пригодился! )
Для какой версии?
30 ноя 11, 09:08    [11681304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить