![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление повторяющихся записей в таблице
kol © (2003-04-23 16:07:00)В таблице есть 2 поля комбинация которых должна быть уникальной. Нужно стереть записи в которых эта комбинация повторяется. но про этом из повторяющихся записей одна должна остаться в базе.
Reindeer Moss Eater (2003-04-24 10:09:00) [1]Заблуждение
NAlexey (2003-04-24 10:08:00) [2]>А кто здесь упомянул о второй таблице?
Да собственно, а кто?
Жук (2003-04-24 09:15:00) [3]
> Карелин Артем © (23.04.03 17:02)
> И сколько же записей останется после удаления? По-моему
> 0. И таблица вроде как одна.
Таблица одна. Записей, удовлетворяющих условию, останется одна.
Reindeer Moss Eater (2003-04-24 09:08:00) [4]А кто здесь упомянул о второй таблице?
Карелин Артем (2003-04-23 17:52:00) [5]Народ, а ведь автор не упомянало второй таблице.
NDeu (2003-04-23 17:45:00) [6]http://www.ibase.ru/devinfo/deldupes.htm
kravchuk (2003-04-23 17:34:00) [7]думаю можно так
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 - это первичный ключ
NAlexey (2003-04-23 17:15:00) [8]А вот примерчик и с удалением:
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
Карелин Артем (2003-04-23 17:10:00) [9]VAleksey © (23.04.03 17:07)
Или результат этого перебросить в другую таблицу и ей заменить старую.
NAlexey (2003-04-23 17:09:00) [10]А так будет работать?
SELECT
FIELD1,
FIELD2,
FIELD3
FROM
TABLE_NAME
GROUP BY
FIELD1,
FIELD2,
FIELD3
HAVING count(*) > 1
VAleksey (2003-04-23 17:07:00) [11]SELECT DISTINCT
А все остальное на фиг любым способом :-)
Карелин Артем (2003-04-23 17:02:00) [12]Жук © (23.04.03 16:52)
И сколько же записей останется после удаления? По-моему 0. И таблица вроде как одна.
Johnmen (2003-04-23 17:01:00) [13]Не надо спорить...:)
Пока автор не указал БД.
Reindeer Moss Eater (2003-04-23 16:58:00) [14]Автор говорит про два поля.
Оба поля - не первичные ключи и их комбинация тоже не PK.
Тольуо этими полями нельзя однозначно определить записи для удаления
Жук (2003-04-23 16:52:00) [15]А конкретнее ?
Reindeer Moss Eater (2003-04-23 16:52:00) [16]Ага
Жук (2003-04-23 16:51:00) [17]
> Reindeer Moss Eater (23.04.03 16:49)
> Неправильно
Это вы мне ? :-)
Reindeer Moss Eater (2003-04-23 16:49:00) [18]Неправильно
Жук (2003-04-23 16:42:00) [19]
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:12:00) [20]Класс TDataSet, метод Delete