Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как одной коммандой DELETE удалить все повторяющиеся записи, и сделать таблицу уникальной?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Stephan



Зарегистрирован: 01.02.2003
Сообщения: 1

СообщениеДобавлено: Сб Фев 01 2003 00:34    Заголовок сообщения: Как одной коммандой DELETE удалить все повторяющиеся записи, и сделать таблицу уникальной? Ответить с цитатой

дана таблица, с двумя столбцами.Без каких либо ограничений над столбцами.
В таблице есть повторяющиеся записи.Как одной коммандой DELETE удалить все повторяющиеся записи, и сделать таблицу уникальной?


исходный нужно
А | В А | В
-------- ----------
1|1 1|1
2|3 2|3
1|1 3|4
3|4
1|1
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Пн Фев 03 2003 14:25    Заголовок сообщения: А нельзя без DELETE? То есть нечто вроде SELECT INTO ... FROM (SELECT SELECT DISTINCT ...) или что-то аналогичное в две команды Ответить с цитатой

-
Вернуться к началу
Zero
Гость





СообщениеДобавлено: Вт Фев 04 2003 20:08    Заголовок сообщения: Re: Как одной коммандой DELETE удалить все повторяющиеся записи, и сделать таблицу уникальной? Ответить с цитатой

Для Oracle:

drop table table_test;
create table table_test (a varchar2(1) not null, b varchar2(1) not null);
insert into table_test(a, b) values (1, 1);
insert into table_test(a, b) values (2, 3);
insert into table_test(a, b) values (4, Cool;
insert into table_test(a, b) values (1, 1);
insert into table_test(a, b) values (5, 9);
insert into table_test(a, b) values (4, Cool;
insert into table_test(a, b) values (1, 1);
insert into table_test(a, b) values (2, 3);
insert into table_test(a, b) values (5, 9);
commit;
select * from table_test;
delete table_test
where rowid not in
(
select min(rowid)
from table_test t
group by a, b
);
commit;
select * from table_test
Вернуться к началу
Zero
Гость





СообщениеДобавлено: Вт Фев 04 2003 20:19    Заголовок сообщения: Re: Как одной коммандой DELETE удалить все повторяющиеся записи, и сделать таблицу уникальной? Ответить с цитатой

Да, забыл, создай уникальный ключ Smile

alter table table_test add constraint UC_TT_A_B unique (a, b);

Только первым полем поставь то, по которому в большинстве запросов в условии поиска обязательно будет ограничение.
По крайней мере так в Oracle
Вернуться к началу
fox_



Зарегистрирован: 12.02.2003
Сообщения: 5

СообщениеДобавлено: Ср Фев 12 2003 15:56    Заголовок сообщения: ага, одна команда Delete..... :) Ответить с цитатой

ага, одна команда Delete.....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
fox_



Зарегистрирован: 12.02.2003
Сообщения: 5

СообщениеДобавлено: Ср Фев 12 2003 15:59    Заголовок сообщения: никак Ответить с цитатой

командой delete никак. запрос select с distinct.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...