Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.15;
Скачать: CL | DM;

Вниз

Удаление повторяющихся записей в таблице   Найти похожие ветки 

 
kol   (2003-04-23 16:07) [0]

В таблице есть 2 поля комбинация которых должна быть уникальной. Нужно стереть записи в которых эта комбинация повторяется. но про этом из повторяющихся записей одна должна остаться в базе.


 
Reindeer Moss Eater   (2003-04-23 16:12) [1]

Класс TDataSet, метод Delete


 
Жук ©   (2003-04-23 16:42) [2]

delete from tabl t1
where (select count(t2.id1) from tabl t2 where t2.id1=t1.id1 and t2.id2=t1.id2)>1


 
Reindeer Moss Eater   (2003-04-23 16:49) [3]

Неправильно


 
Жук ©   (2003-04-23 16:51) [4]


> Reindeer Moss Eater (23.04.03 16:49)
> Неправильно

Это вы мне ? :-)


 
Reindeer Moss Eater   (2003-04-23 16:52) [5]

Ага


 
Жук ©   (2003-04-23 16:52) [6]

А конкретнее ?


 
Reindeer Moss Eater   (2003-04-23 16:58) [7]

Автор говорит про два поля.
Оба поля - не первичные ключи и их комбинация тоже не PK.
Тольуо этими полями нельзя однозначно определить записи для удаления


 
Johnmen ©   (2003-04-23 17:01) [8]

Не надо спорить...:)
Пока автор не указал БД.


 
Карелин Артем ©   (2003-04-23 17:02) [9]

Жук © (23.04.03 16:52)
И сколько же записей останется после удаления? По-моему 0. И таблица вроде как одна.


 
VAleksey ©   (2003-04-23 17:07) [10]

SELECT DISTINCT
А все остальное на фиг любым способом :-)


 
NAlexey ©   (2003-04-23 17:09) [11]

А так будет работать?

SELECT
FIELD1,
FIELD2,
FIELD3
FROM
TABLE_NAME

GROUP BY
FIELD1,
FIELD2,
FIELD3
HAVING count(*) > 1


 
Карелин Артем ©   (2003-04-23 17:10) [12]

VAleksey © (23.04.03 17:07)
Или результат этого перебросить в другую таблицу и ей заменить старую.


 
NAlexey ©   (2003-04-23 17:15) [13]

А вот примерчик и с удалением:

SELECT
FIELD1,
FIELD2
FIELD3

INTO
#tmp
FROM
TABLE_NAME

GROUP BY
FIELD1,
FIELD2,
FIELD3
HAVING count(*) > 1

delete
TABLE_NAME
FROM
TABLE_NAME tt
WHERE exists (
SELECT
*
FROM
#tmp t
WHERE
tt.FIELD1 = t.FIELD1 and
tt.FIELD2 = t.FIELD2 and
tt.FIELD3 = t.FIELD3
)

INSERT INTO TABLE_NAME SELECT * FROM #tmp
drop table #tmp


 
kravchuk ©   (2003-04-23 17:34) [14]

думаю можно так

delete from our_table t1
where exists
(
select t2.id
from our_table t2
where t1.field1=t2.field1
and t1.field2=t2.field2
and t1.id<>t2.id
)

id - это первичный ключ


 
NDeu ©   (2003-04-23 17:45) [15]

http://www.ibase.ru/devinfo/deldupes.htm



 
Карелин Артем ©   (2003-04-23 17:52) [16]

Народ, а ведь автор не упомянал о второй таблице.


 
Reindeer Moss Eater   (2003-04-24 09:08) [17]

А кто здесь упомянул о второй таблице?


 
Жук ©   (2003-04-24 09:15) [18]


> Карелин Артем © (23.04.03 17:02)
> И сколько же записей останется после удаления? По-моему
> 0. И таблица вроде как одна.

Таблица одна. Записей, удовлетворяющих условию, останется одна.


 
NAlexey ©   (2003-04-24 10:08) [19]

>А кто здесь упомянул о второй таблице?
Да собственно, а кто?


 
Reindeer Moss Eater   (2003-04-24 10:09) [20]

Заблуждение



Страницы: 1 вся ветка

Текущий архив: 2003.05.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
14-46965
NetBreaker666
2003-04-24 20:21
2003.05.15
Обработка исключений


3-46626
Карелин Артем
2003-04-23 13:56
2003.05.15
FireBird и безопасность метаданных.


3-46604
ЧК
2003-04-23 14:36
2003.05.15
DbGrid не принимаеть больше 32657 items. А мне надо...


1-46765
Helldriver
2003-04-29 23:34
2003.05.15
Обработка exception ов из главного модуля приложения


3-46667
_Narayan_
2003-04-25 09:58
2003.05.15
в хранимой процедуре