удалить дубликаты в SQL

User avatar
Dweller
Уже с Приветом
Posts: 12262
Joined: 20 Dec 2000 10:01
Location: Bellevue, WA

удалить дубликаты в SQL

Post by Dweller »

можно ли это сделать одним statement так чтобы не использовать Identity auto-number field?

т.е. таблица типа

Field 1 Field 2 Field3
A B D
A F T
A B D

надо чтобы осталось только 1 и 2я записи (или можно 2я и 3я).
спасибо!
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

НИКАК
Надо переписать в другое место с distinct, а потом скопировать назад. Ну или с having count(*)...
Все равно несколько операторов
Но что Вам мешает их написать один за другим ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Dweller
Уже с Приветом
Posts: 12262
Joined: 20 Dec 2000 10:01
Location: Bellevue, WA

Post by Dweller »

пришлось добавить уникальное поле дата вставки записи
потом удаляю дубликаты кроме самого свежего

это я пытаюсь тут решить задачу репликации между 2мя серверами вручную с помощью триггеров и ежечасных пересылок таблиц
Lazy44
Уже с Приветом
Posts: 525
Joined: 01 May 2002 20:29
Location: CT->MA->TX->UT

Post by Lazy44 »

In Oracle I do such things in one statement like this:

delete from your_table_name
where rowid not in (
select rid from (
select max(rowid) rid,
Field1,
Field2,
Field3
from your_table_name
group by Field1,
Field2,
Field3
having count(*) > 1))
In a theory there is no difference
Between theory and reality
But in a reality there is ...
Victor
Уже с Приветом
Posts: 2107
Joined: 04 Mar 1999 10:01
Location: Gaithersburg, MD

Post by Victor »

Если дубликатов немного, то можно открыть курсор и сделать
SET ROWCOUNT @n
DELETE ...
SET ROWCOUNT 0
:)
Last edited by Victor on 18 Dec 2003 17:52, edited 1 time in total.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Это уже не ОДИН ОПЕРАТОР :)
А rowid в MS SQL нет
Поэтому ОДНИМ оператором это не раешается
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
Victor
Уже с Приветом
Posts: 2107
Joined: 04 Mar 1999 10:01
Location: Gaithersburg, MD

Post by Victor »

Oops... Не заметил этого. А в зачем именно одним оператором, если это не задачка с олимпиады?
User avatar
Dweller
Уже с Приветом
Posts: 12262
Joined: 20 Dec 2000 10:01
Location: Bellevue, WA

Post by Dweller »

Victor wrote:Oops... Не заметил этого. А в зачем именно одним оператором, если это не задачка с олимпиады?


скучно немного на работе вот и извращаемся :P

Return to “Вопросы и новости IT”