Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Удаление дубликатов / 6 сообщений из 6, страница 1 из 1
27.12.2017, 11:45
    #39576675
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов
Приветствую.
При выборке из таблицы получаю более 1 строки. При этом все что после 1й строки нужно удалить. Как это сделать если все поля одинаковы? :-)

Что то вроде этого:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
       -- Check for dublicates \/
       For R In (select count(*),
                        serno,
                        linkserno
                   from data1
                  where linkserno = fLinkSerno
                  group by serno, linkserno
                  having count(*) > 1) Loop
           select rownum, serno 
             into fRowNum, fSerno
             from data1 
             
           If fRowNum > 1 Then 
              Delete From data1 where rownum = fRowNum;
           End If;
       End Loop; 
       -- Check for dublicates /\
...
Рейтинг: 0 / 0
27.12.2017, 11:47
    #39576679
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов
...
Рейтинг: 0 / 0
27.12.2017, 11:57
    #39576695
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов
Угу, спасибо:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
       For R In (select count(*),
                        max(rowid) max_rowid,
                        serno,
                        linkserno
                   from data1
                  where linkserno = fLinkSerno
                  group by serno, linkserno
                  having count(*) > 1) Loop
           
           Delete From data1
                 where rowid <> R.max_rowid 
                   and serno = R.serno 
                   and linkserno = R.linkserno;
           fDelCount := fDelCount + sql%rowcount;
       End Loop;
...
Рейтинг: 0 / 0
27.12.2017, 12:28
    #39576718
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов
Модно нынче циклами пользоваться стало.
...
Рейтинг: 0 / 0
27.12.2017, 12:36
    #39576722
Aliona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов
а вот ещё в форуме Oracle ТОП популярных вопросов
http://www.sql.ru/forum/212946/top-populyarnyh-voprosov


2. Вопрос. Неуникальные строки, строки-дубликаты: как найти неуникальные строки в таблице, как удалить лишние строки и оставить только уникальные?
Ответ. FAQ: Поиск и удаление строк - дубликатов.
...
Рейтинг: 0 / 0
27.12.2017, 12:53
    #39576735
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов
Петров АндрейПриветствую.
При выборке из таблицы получаю более 1 строки. При этом все что после 1й строки нужно удалить. Как это сделать если все поля одинаковы? :-)

Что то вроде этого:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
       -- Check for dublicates \/
       For R In (select count(*),
                        serno,
                        linkserno
                   from data1
                  where linkserno = fLinkSerno
                  group by serno, linkserno
                  having count(*) > 1) Loop
           select rownum, serno 
             into fRowNum, fSerno
             from data1 
             
           If fRowNum > 1 Then 
              Delete From data1 where rownum = fRowNum;
           End If;
       End Loop; 
       -- Check for dublicates /\


faq
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Удаление дубликатов / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]