Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление повторных записей?  [new]
moid
Member

Откуда:
Сообщений: 8
В базе есть дублирующиеся записи (по 2-м полям). Нужно оставить только уникальные записи, их дубликаты удалить.
Каким образом это можно быстро сделать?
8 сен 11, 16:14    [11248936]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
moid
В базе есть дублирующиеся записи (по 2-м полям). Нужно оставить только уникальные записи, их дубликаты удалить.
Каким образом это можно быстро сделать?
Вам нужно эссе на заданную тему?
Заодно скажите, по каким признакам определяете, что оставить, а что удалить для одинаковых "двух полей".
8 сен 11, 16:21    [11249020]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
moid
Member

Откуда:
Сообщений: 8
Пример:

Картинка с другого сайта.

Из повторяющихся записей нужно оставить только одну F0 = 1.
8 сен 11, 16:44    [11249234]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
row_number
Guest
delete t
from (
	select row_number() over (partition by f2,f3 order by f1) as rn, *
	from table 
) t
where t.rn > 1
8 сен 11, 16:51    [11249291]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
Vaja
Member

Откуда:
Сообщений: 49
delete from tablename
where f0 not in
(
select top 1 with ties f0
from tablename
ORDER BY ROW_NUMBER() over (partition by f1,f2 order by f0)
)
8 сен 11, 16:54    [11249339]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
moid
Member

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

Спасибо
8 сен 11, 17:01    [11249434]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
row_number
delete t
from (
	select row_number() over (partition by f2,f3 order by f1) as rn, *
	from table 
) t
where t.rn > 1
Звёздочку можно и убрать :)
DELETE T
FROM [table] T
WHERE EXISTS
(
 SELECT T.F1,T.F2
 INTERSECT
 SELECT TT.F1,TT.F2
 FROM [table] TT
 WHERE TT.F0<T.F0
);
8 сен 11, 17:08    [11249491]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
moid,

Это первый вопрос, который я задаю на собеседовании.
8 сен 11, 21:21    [11250657]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
iap
Member

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

Это первый вопрос, который я задаю на собеседовании.
А второй? :)
8 сен 11, 21:42    [11250729]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
нестедлуп
Guest
iap
pkarklin
moid,

Это первый вопрос, который я задаю на собеседовании.
А второй? :)

конечно про отличая нестедлуп от хешджойн.
8 сен 11, 23:55    [11251124]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
нестедлуп
конечно про отличая нестедлуп от хешджойн.


9 сен 11, 08:45    [11251481]     Ответить | Цитировать Сообщить модератору
 Re: Удаление повторных записей?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
iap
pkarklin
moid,

Это первый вопрос, который я задаю на собеседовании.
А второй? :)

А второго нет
Если на первый ответил человек - значит все нормально
Если нет - тоже нормально, до свидания :)

-- Tygra's --
....а справку о психическом здоровье у меня отобрали марсиане.
9 сен 11, 08:56    [11251523]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить