![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
[ORACLE] Удаление повторяющихся записей [D7]
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