С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Oracle
Войти
Регистрация
Восстановить пароль
 
Mikky Mous
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
1

Избавиться от дубликатов

13.07.2018, 10:01. Просмотров 154. Ответов 3
Метки нет (Все метки)

добрый день.
подскажите: есть массив данных, в котором есть дублирующиеся строки.
как можно построчно пройти по всем дублирующимся строкам и выбрать только одну необходимую строку. (про цикл я знаю, мне интересно как я могу оставить только одну из дублирующихся строк)...


подскажите в каком направлении думать
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2018, 10:01
Ответы с готовыми решениями:

Удаление дубликатов
Как удалить из базы дубликаты, т.е. primati key у них отличаются, а отстальный...

Удаление дубликатов в таблице
таблица IMEI_IC (Столбцы : imei, model, n_doc, data_h, iniciator data_p)...

Удаление дубликатов строк
Доброго всем времени суток! Есть таблица, в которой присутствуют дубликаты...

Отсеивание условных дубликатов
Здравствуйте. Есть таблица Product PK | Code | Catalog...

SQL удаление дубликатов по полю
Здравствуйте, есть в табличке поле text нужен SQL запрос который удалит...

3
Jefe
233 / 218 / 92
Регистрация: 05.06.2013
Сообщений: 673
13.07.2018, 10:54 2
Введи в гугле "oracle get unique records" и на тебя снизойдет озарение в виде 1го же результата
0
Grossmeister
Модератор
3426 / 2475 / 425
Регистрация: 21.01.2011
Сообщений: 10,870
13.07.2018, 10:55 3
Цитата Сообщение от Mikky Mous Посмотреть сообщение
подскажите в каком направлении думать
Я думаю, что для этого есть алгоритмы, не относящиеся к БД вообще и к Oracle в частности (если под массивом понимается коллекция в терминологии Oracle).

Но по крайней мере один вариант именно с БД есть
Создаем временную таблицу, навешиваем unique constraint на те поля, которые не должны повторяться (т.е. в общем случае constraint будет один на несколько полей). Далее массив данных запихиваем в таблицу. При нарушении уникальности будет возникать EXCEPTION, который мы перехватываем. Таким образом после окончания записи в таблице будут только уникальные строки.
0
Jefe
233 / 218 / 92
Регистрация: 05.06.2013
Сообщений: 673
13.07.2018, 12:01 4
Если нет констрейнов на другие таблицы, то можно так:
SQL
1
2
3
4
5
6
7
8
9
10
1.
CREATE TABLE new_table_without_duplicates
  AS (SELECT DISTINCT * FROM your_table);
 
2. 
DROP TABLE your_table;
 
3.
ALTER TABLE new_table_without_duplicates
  RENAME TO your_table;
Добавлено через 23 минуты
Но можно и как-то так:
1. Создать новый столбец
2. Вставить в этот столбец данные вот такого плана:
SQL
1
ROW_NUMBER() OVER (partition BY тут_перечислить_через_запятую_все столбцы ORDER BY 1)
3. Удалить строки в которых значение этого столбца будет > 1
4. Удалить столбец.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2018, 12:01

Pl/sql функция удаления дубликатов в строке
Необходима функция на pl/sql, на входе и выходе строка, разделитель между...

Удаление дубликатов по номеру абонента из таблицы
Есть таблица ABONENT IVR --------------------...

Как избавиться от кольца в БД?
Доброго времени суток. При проектировании БД встал вопрос как избавиться от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru