Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

[ORACLE] Удаление повторяющихся записей [D7]


Страницы:   1 2

McSimm2 ©   (2003-09-08 13:29:00) 

Есть возможность в запросе удалить повторяющиеся записи, причём не все, а одну оставить?
value1
value2
value1
value1
value3

На выходе
value1
value2
value3


Zacho   (2003-09-08 14:01:00) [21]

2 McSimm2 :
На будующее - никогда не создавай таблиц без первичных ключей, а то еще и не такие проблемы будут.


Reindeer Moss Eater   (2003-09-08 14:01:00) [22]

Используй ROWID и все получится даже в одном запросе


Vlad   (2003-09-08 13:59:00) [23]

Это Sandman25 © пошутил так.
Ни в коем случае при удалении не пользуйся RowNum !!!
Видимо одним запросом сделать не получится.


McSimm2   (2003-09-08 13:57:00) [24]

Точнее вот так конечно

DELETE FROM aaa b
WHERE ROWNUM <> (SELECT MIN (ROWNUM)
FROM aaa a
WHERE a.ff = b.ff)


McSimm2   (2003-09-08 13:55:00) [25]

Sandman25 © (08.09.03 13:43) [8]

У меня таблица AAA, в ней поле FF,значения
1
2
1
3
1

подзапрос
select min(rownum)
from FF a
where a.field = a.field

возвращает 1 запись.
А весь запрос сообщает что ничего не удалено
delete from FF b
where rownum <>
(select min(rownum)
from FF a
where a.field = b.field)


DenK_vrtz   (2003-09-08 13:44:00) [26]

Маленькую процедуру написать и все, так как одним запросом может и не удастся


Sandman25   (2003-09-08 13:43:00) [27]

Если я правильно помню, в Oracle есть что-то типа RowNum - внутренний уникальный номер строки. Тогда можно удалить так:
delete from table
where rownum <>
(select min(rownum)
from table a
where a.field = table.field)


McSimm2   (2003-09-08 13:43:00) [28]

Да есть, впринципе можно попробовать в подзапросе сделать дистинкт, а через внешний запрос сделать привязку по этим полям. Как только потом удаление сделать ... что бы поле одно оставалось...


Vlad   (2003-09-08 13:40:00) [29]

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


McSimm2   (2003-09-08 13:35:00) [30]

DenK_vrtz © (08.09.03 13:33) [3]
Уникального поля нет. Повторяющихся может быть сколь угодно много ... :(


McSimm2   (2003-09-08 13:35:00) [31]

Vlad © (08.09.03 13:32)
GROUP BY или тот же distinct мне выведетне повторяющиеся записи, а как мне физически удалить их ?


DenK_vrtz   (2003-09-08 13:33:00) [32]

физически удалить? уникальное поле есть? ТОлько одно значение повторяется или может быть сколько угодно повторяющихся?


Vlad   (2003-09-08 13:32:00) [33]

Возможность есть.
в конце запроса написать GROUP BY <нужное_поле>


Плохиш_   (2003-09-08 13:32:00) [34]

distinct


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо